我想读取文本文件中的特定行并将元素存储在列表中。
我的文本文件看起来像这样
'item1' 'item2' 'item3'
我总是以每个字母为元素的列表结束
我试过的
line = file.readline()
for u in line:
#do something
我想读取文本文件中的特定行并将元素存储在列表中。
我的文本文件看起来像这样
'item1' 'item2' 'item3'
我总是以每个字母为元素的列表结束
我试过的
line = file.readline()
for u in line:
#do something
line = file.readline()
for u in line.split():
# do stuff
这假设项目被空格分割。
用空格分割行,然后将它们添加到列表中:
# 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)
您在那里的内容将读入一整行,然后循环遍历该行中的每个字符。您可能想要做的是将该行拆分为 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
您可以通过将使用的各种函数串在一起来减少此处的行数(和变量),但为了便于理解,我将它们分开。
你可以试试:
for u in line.split():
假设每个项目之间有空格。否则,您将简单地迭代 a str
,从而逐个字符地迭代。
您可能还想这样做:
u = u.strip('\'')
摆脱'
我会使用with
,re
并且基本上在撇号之间取任何东西...(这适用于其中包含空格的字符串(例如:item 1
item 2
,但显然不会捕获嵌套或字符串转义序列)。
import re
with open('somefile') as fin:
print re.findall("'(.*?)'", next(fin))
# ['item1', 'item2', 'item3']
如果你想要列表中的所有字符,你可以试试这个。
这使用双重列表理解。
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)