在Python列表元素内迭代
如何读取包含一行文本但需要在每个元素内部迭代的文件?该文件需要在脚本内部访问,超出“with”语句的范围 例如,file.txt包含不带引号的单行“abcdefg”。如果我在下面编写代码,它将无法工作,因为我相信我正在列表中创建一个元素(即lines=['abcdefg']:在Python列表元素内迭代,python,Python,如何读取包含一行文本但需要在每个元素内部迭代的文件?该文件需要在脚本内部访问,超出“with”语句的范围 例如,file.txt包含不带引号的单行“abcdefg”。如果我在下面编写代码,它将无法工作,因为我相信我正在列表中创建一个元素(即lines=['abcdefg']: file = 'file.txt' with open(file) as file_object: lines = file_object.readlines() for letter in lines:
file = 'file.txt'
with open(file) as file_object:
lines = file_object.readlines()
for letter in lines:
if letter == "a":
print(letter)
我假设这会在行中创建一个单独的“abcdefg”元素,当然不等于“a”
我可以通过将列表转换为字符串来解决此问题:
{snip}
text_file_string = ''.join(lines)
for letter in text_file_string:
if letter == "a":
print(letter)
这确实有效。我想我真正的问题是,有没有更好的方法来实现这一点?这似乎是一种迂回的方法,先将其设置为列表,然后再设置为字符串。我想我可以直接将其导入字符串,然后跳过将其全部设置为列表。我只是想知道我是否可以将其设置为列表?循环结束这些行一次提供一行。在一行上循环以一次获得一个字符:
file = 'file.txt'
with open(file) as file_object:
lines = file_object.readlines()
for line in lines:
for letter in line:
if letter == "a":
print(letter)
您需要为循环嵌套一秒钟
file = 'file.txt'
with open(file) as file_object:
lines = file_object.readlines()
for line in lines:
for letter in line:
if letter == "a":
print(letter)
看起来您要查找的是
.read()
,而不是。readlines()
。readlines
返回一个行数组。您希望整个文件作为字符串,因此.read()
同意其他人的意见,但有一个额外的建议。文件对象是可移植的。您可以通过这样利用这一事实来简化代码
with open("myfile.txt", "rt") as file_ob:
for line in file_ob:
for letter in line:
if letter == "a":
print(letter)
对循环使用嵌套的
怎么样?我甚至没有想到嵌套循环。这也很有效,因为它以列表形式保存了数据。我是python新手(不到两周),所以我必须用谷歌搜索“rt”参数。感谢@Phil Cote。有这么多方法做,有时会让人不知所措。
with open("myfile.txt", "rt") as file_ob:
for line in file_ob:
for letter in line:
if letter == "a":
print(letter)