如何使用PYthon

时间:2015-07-07 16:44:30

标签: python file-io split

所以我有一个文本文件,结构如下:

Product ID List:

ABB:
578SH8
EFC025
EFC967

CNC:
HDJ834
HSLA87
...
...

此文件继续使用许多公司的名称,Id位于其下方。然后我需要获取所选公司的ID并将它们附加到列表中,在那里它们将用于搜索网站。以下是我必须获取数据的当前行:

PID = open('PID.txt').read().split()

如果那里只有1家公司的产品ID且没有文字,那么效果很好。这对我计划做的事情不起作用但是......如果读者在下一个公司之前说ABB:之后,如何阅读(例子)?我想也许可以在文件中添加某种东西,比如ABB END,知道要切到哪里,但我仍然不知道如何在第一行之间切断...如果你能让我知道,那太好了!

4 个答案:

答案 0 :(得分:1)

由于文件的结构类似,您可以按照以下步骤操作:

  1. 根据列表中的两个换行符\n\n拆分
  2. 将每个列表拆分为一个换行符\n
  3. 删除包含每个公司ID的列表的第一个元素
  4. 根据公司名称的需要使用第一个元素(如上所述)(确保删除冒号)
  5. 另外,请查看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