我对Python很陌生,我想问以下问题:
举个例子,我有下面的.txt文件:
USERNAME -- example.name
SERVER -- server01
COMPUTERNAME -- computer01
我想在本文档中搜索三个关键字:USERNAME
、SERVER
和COMPUTERNAME
,当我找到它们时,我想提取它们的值,即每行分别为"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(。然后,您可以将所有不同的地址存储在一个列表中,并将该列表绑定到data
dict
{
'USERNAME': 'example.name',
'Addresses': ['6001:8000:1080:142::12', '8002:2013:2380:110::53']
}