我正在使用python 3.4
我有一个.txt文件,每行以一个id号开头,然后是字母和数字,例如......
012394 The big Project 1997 June Terry Smith
013894 Toms Project 1994 March Michaal Bach
依旧......我需要将所有以01开头的行复制到另一个文件
当我使用以下内容时,它一直给我上述错误:
with open("old.txt","r") as mf, open("new.txt","w") as nf:
def dafunction():
mf = open ("old.txt", "r")
nf = open("new.txt","w")
for line in mf:
bat = str(line)
if bat.startswith(01):
nf.write(line)
dafunction()
mf.close()
nf.close()
我尝试过使用bat.startswith(" 01)并跳过设置bat变量并直接转到line.startswith(01)等等,我一直收到错误。
有谁知道我做错了什么?或另一种实现目标的方式?
非常感谢任何帮助!
答案 0 :(得分:2)
你有很多不必要的代码。尝试:
with open("old.txt") as mf, open("new.txt", "w") as nf:
for line in mf:
if line.startswith('01'):
nf.write(line)
答案 1 :(得分:0)
if bat.startswith(01): is not correct python syntax, you cannot use an `int`
您应该只在函数内打开文件。
def dafunction():
with open("old.txt","r") as mf:
with open("new.txt","w") as nf:
for line in mf:
if line.startswith("01"):
nf.write(line)
答案 2 :(得分:0)
好的,谢谢你的帮助,你真的帮我清理了我的代码,但似乎问题是文本文件是从excel保存为unicode txt文件,显然是IDLE或python或者其他什么东西没有。与unicode配合得很好,如果没有其他转换代码或其他东西,它就无法准确比较。
我将文件保存为仅限txt制表符分隔,然后运行代码并且效果很好!再次感谢yall的帮助,我希望将来某个时候有人可以使用它!
tl:dr - 文件以unicode保存,导致问题。