2

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

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

'item1' 'item2' 'item3'

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

我试过的

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

6 回答 6

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

这假设项目被空格分割。

于 2013-02-21T15:24:10.323 回答
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)
于 2013-02-21T15:36:31.243 回答
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           

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

于 2013-02-21T15:25:16.347 回答
1

你可以试试:

for u in line.split():

假设每个项目之间有空格。否则,您将简单地迭代 a str,从而逐个字符地迭代。

您可能还想这样做:

u = u.strip('\'')

摆脱'

于 2013-02-21T15:27:38.120 回答
1

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

import re

with open('somefile') as fin:
    print re.findall("'(.*?)'", next(fin))
    # ['item1', 'item2', 'item3']
于 2013-02-21T15:30:48.530 回答
0

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

这使用双重列表理解。

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

如果你想去掉一些字符,你可以应用一些过滤器,例如;我不希望 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)
于 2017-10-25T10:16:17.353 回答