我写了一些代码从下面的.txt中获取一些行,它不断地返回一些我并不打算用括号括起来的行。你能帮帮我吗?在
代码:
#!/bin/python
i=1
f=open("name.txt","r")
while(i<=225):
x=f.readline().splitlines()
print("mol new %s.bgf"%(x))
i+=1
f.close()
在名称.txt在
^{pr2}$它又回来了
mol new ['02.ala.r49r50.TRK820.no_0.rnd_1.c14421.f.c'].bgf
mol new ['04.ala.r44r45.TRK820.no_0.rnd_1.c48608.h.c'].bgf
mol new ['09.ala.r46r47.TRK820.no_0.rnd_1.c14682.t.c'].bgf
mol new ['17.ala.r47r48.TRK820.no_0.rnd_1.c9610.th.c'].bgf
mol new ['18.ala.r48r49.TRK820.no_59.rnd_1.c19106.t.c'].bgf
不需要对readline()的结果调用splitlines()方法。
文件.readline()返回文件的一行,包括尾随的新行。
.splitlines()通过将换行符用作分隔符并为您提供一个只有1项的行列表,从而消除了换行符。括号来自于1项列表的str表示
你想要这个:
要删除换行符,或者您也可以像这样将换行符切掉
^{pr2}$您可以考虑的另一件事是更改代码以将file对象用作iterable。在Python中编写
而不是使用while循环和.readline()
readline
函数从文件中读取一行。然后,您要求将行拆分为一个列表行(这将给您一个只有一行的列表,因为这是您所拥有的)。在不要拆分单线。取而代之的是去掉字符串的(删除前导和尾随的“空白”)。在
有关^{} 和{a3}的更多信息,请阅读the string reference。在
对代码进行最小程度的更改,请尝试:
这会产生如下输出:
^{pr2}$进一步改进:
注意事项:
您希望使用
with open("name.txt","r") as f
来确保文件f
无论如何都会被关闭。在
i
上循环作为i=1; while(i<=225): i+=1
中的计数器不是Python。请改用enumerate。readline
读取一行。不需要splitlines
。通过循环使用
for i, line in enumerate(f):
在文件中的行上循环,我们消除了一次读入整个文件的需要。这使得程序适合处理非常大的文件。在python中,当从文件中读取一行时,它的末尾仍然有新行。我们使用
rstrip('\n')
安全地删除它。相关问题 更多 >
编程相关推荐