从文件读取行但存储为列表(python)

时间:2013-02-21 15:17:42

标签: python

我想读取文本文件中的特定行并将这些元素存储在列表中。

我的文本文件看起来像这样

'item1' 'item2' 'item3'

我总是以每个字母作为元素的列表结束

我尝试了什么

line = file.readline()
        for u in line:
            #do something

6 个答案:

答案 0 :(得分:3)

line = file.readline()
for u in line.split():
    # do stuff

这假设项目按空格分割。

答案 1 :(得分:3)

按空格分割线条,然后将它们添加到列表中:

# line = ('item1' 'item2' 'item3') example of line
listed = []
line = file.readline()
for u in line.split(' '):
    listed.append(u)

for e in listed:
    print(e)

答案 2 :(得分:2)

你所拥有的内容将读取整行,然后循环遍历该行中的每个字符。您可能想要做的是将该行拆分为3个项目。如果它们用空格分隔,你可以这样做:

line = file.readline()      # Read the line in as before
singles = line.split(' ')   # Split the line wherever there are spaces found. You can choose any character though
for item in singles:        # Loop through all items, in your example there will be 3
    #Do something           

您可以通过将各种函数串在一起来减少行数(和变量),但为了便于理解,我将它们分开。

答案 3 :(得分:1)

您可以尝试:

for u in line.split():

假设每个项目之间有空格。否则,您只需迭代str,然后按字符迭代。

您可能还想这样做:

u = u.strip('\'')

摆脱'

答案 4 :(得分:1)

我使用withre并且基本上在撇号之间取任何东西......(这适用于其中包含空格的字符串(例如:item 1 {{1但是,显然不会捕获嵌套或字符串转义序列。)

item 2

答案 5 :(得分:0)

如果你想要列表中所有行的字符,你可以试试这个。

这使用双列表理解。

with open('stackoverflow.txt', 'r') as file:
    charlist = [c for word in file.readline().split(' ') for c in word ]
    print(charlist)

如果你想摆脱一些char,你可以应用一些过滤器,例如;我不想要char ='在我的清单中。

with open('stackoverflow.txt', 'r') as file:
    charlist = [c for word in file.readline().split(' ') for c in word if(c != "'")]
    print(charlist)

如果这个双列表理解看起来很奇怪就是这个。

with open('stackoverflow.txt', 'r') as file:
    charlist = []
    line = file.readline()
    for word in line.split(' '):
        for c in word:
            if(c != "'"):
                charlist.append(c)

    print(charlist)