所以我有一个文本文件,结构如下:
Product ID List:
ABB:
578SH8
EFC025
EFC967
CNC:
HDJ834
HSLA87
...
...
此文件继续使用许多公司的名称,Id位于其下方。然后我需要获取所选公司的ID并将它们附加到列表中,在那里它们将用于搜索网站。以下是我必须获取数据的当前行:
PID = open('PID.txt').read().split()
如果那里只有1家公司的产品ID且没有文字,那么效果很好。这对我计划做的事情不起作用但是......如果读者在下一个公司之前说ABB:
之后,如何阅读(例子)?我想也许可以在文件中添加某种东西,比如ABB END
,知道要切到哪里,但我仍然不知道如何在第一行之间切断...如果你能让我知道,那太好了!
答案 0 :(得分:1)
由于文件的结构类似,您可以按照以下步骤操作:
\n\n
拆分\n
另外,请查看regular expressions来解析这样的数据。
答案 1 :(得分:1)
with open('file.txt', 'r') as f: # open the file
next(f) # skip the first line
results = {} # initialize a dictionary
for line in f: # iterate through the remainder of the file
if ':' in line: # if the line contains a :
current = line.strip() # strip the whitespace
results[current] = [] # and add it as a dictionary entry
elif line.strip(): # otherwise, and if content remains after stripping whitespace,
results[current].append(line.strip()) # append this line to the relevant list
答案 2 :(得分:1)
两个连续的换行符充当分隔符,因此只需在其中分割一个构造数据的字典:
data = {i.split()[0]: i.split()[1:] for i in open('PID.txt').read().split('\n\n')}
答案 3 :(得分:0)
这至少应该让你开始,你可能会比使用列表更好运用字典,至少在逻辑的第一部分。你会用什么方法传递代码?
a = {}
f1 = open("C:\sotest.txt", 'r')
current_key = ''
for row in f1:
strrow = row.strip('\n')
if strrow == "":
pass
elif ":" in strrow:
current_key = strrow.strip(':')
a[current_key] = []
else:
a[current_key].append(strrow)
for key in a:
print key
for item in a[key]:
print item