通过关键字查找行,并在python中获取所述行的值



我对Python很陌生,我想问以下问题:

举个例子,我有下面的.txt文件:

USERNAME -- example.name
SERVER -- server01
COMPUTERNAME -- computer01

我想在本文档中搜索三个关键字:USERNAMESERVERCOMPUTERNAME,当我找到它们时,我想提取它们的值,即每行分别为"example.name", "server01" and "computer01"

这可能吗?我已经尝试过按行号搜索,但我更喜欢按关键字搜索。

问题2:在这个.txt文件的某个地方,有一行关键字为Adresses:,它有多个值,但列在不同的行中,比如:

Adresses:  
6001:8000:1080:142::12
8002:2013:2380:110::53
9007:2013:2380:117::80
.
.

因此,有没有办法获得所有列出的地址,而不仅仅是第一个地址?所述地址的数量是动态的,因此将来可能会发生变化。

对此,我真的不知道该怎么开始。我很感激任何暗示或给我指明正确的方向。

非常感谢您的时间和关注!

像这样:

with open("filename.txt") as f:
for x in f:
a = x.split(" -- ")
print(a[1])

如果给定值的行总是以关键字开头,您可以尝试类似的方法


with open('file.txt', 'r') as file:
for line in file:
if line.startswith('keyword'):
keyword, value = line.split(' -- ')

为了收集所有地址,我会事先启动地址列表,然后添加行

addresses.append(value)

if语句内部

对于这类任务,您最好的朋友将是str.split函数。您可以将数据放入dict中,该CCD_7将关键字映射到值:

data = {}                                     # Create a new dict
with open('data.txt') as file:                # Open the file containing the data
lines = file.read().split('n')             # Split the file in lines
for line in lines:                          # For each line
keyword, value = line.split(' -- ')       # Extract keyword and value
data[keyword] = value                     # Put in the dict

然后,您可以使用data['USERNAME']访问您的值。这种方法适用于每行包含键值关联的任何文档(即使您有3个以上的关键字(。但是,如果同一个文本文件包含您所提到的格式的地址,它将不起作用。

如果你想在同一个文件中包含这些地址,你需要调整代码。例如,您可以检查splitted_line是否包含两个元素(=同一行上的键值,如USERNAME(或仅包含一个元素(=多行上的关键字,如CCD11(。然后,您可以将所有不同的地址存储在一个列表中,并将该列表绑定到datadict

{
'USERNAME': 'example.name',
'Addresses': ['6001:8000:1080:142::12', '8002:2013:2380:110::53']
}

最新更新