我有这个代码
import urllib.request
fw = open("myfile.txt", "r")
red = fw.read()
line = red.split("\n")
blue = line.split("@")[0]
i=0
while i<len(blue):
try:
try code is here
try:
try code is here
except:
print(blue[i] + " is " + "having e1")
except:
print(blue[i] + " is " + "having e2")
i+=1
我得到
Errno 2没有这样的文件或目录
当我尝试运行文件时。但是,当我删除行blue = line.split("@")
时,它工作正常。
我想做的是在myfile.txt
的所有行上重复此代码-因此我先拆分\n
以获得文件的一行,然后我想获取{{ 1}},然后将其放在字符串@
当我删除blue
任何帮助将不胜感激。
答案 0 :(得分:1)
line = red.split("\n")
blue = line.split("@")[0]
执行red.split("\n")
时,将获得行列表。因此,代码中的line
本质上是行列表。
演示:
>>> red = '''\
... This is line 1
... This is line 2
... This is line 3'''
>>> red.split('\n')
['This is line 1', 'This is line 2', 'This is line 3']
您无法在列表上执行split
。
相反,获取line
的每个项目并对其进行分割。
这是一种 list-comprehension 处理问题的方法:
blue = [x.split('@')[0] for x in line]
在上面的代码中,我们遍历line
中的每个项目(如前所述,这是行的列表)。在每次迭代中,x
将从line
中取出每个值。 x
占一行,然后进行拆分,然后在下一次迭代时,从列表中获取下一行,进行拆分并一直持续到结束。