尝试在python中使用\ n时,我遇到了一个反复出现的问题。我正在尝试从另一个文本文件中提取数据后将代码写入文本文件但是当我运行代码时它总是在\ n之后显示“行后续字符后的意外字符”错误。这是我目前使用的代码。
while True:
while True:
try:
Prod_Code = input("enter an 8 digit number or type Done to get your final receipt: ")
check = len(Prod_Code)
int(Prod_Code)
if check == 8:
print("This code is valid")
with open('Data Base.txt', 'r') as searchfile:
for line in searchfile:
if Prod_Code in line:
print(line)
receipt = open('Receipt.txt', 'w')
receipt.write(line, \n)
receipt.close()
break
else:
print("incorrect length, try again")
except ValueError:
if Prod_Code == "Done":
print("Your receipt is being calculated")
exit()
else:
print("you must enter an integer")
答案 0 :(得分:2)
与print
不同,write
只接受一个参数(你也不能在不将它们转换为字符串的情况下写入浮点数和插入符号 - 这里不是问题)。
当然,必须引用你的\n
字符。所以写:
receipt.write(line + "\n")
根据您的评论,您的代码似乎无法正常工作,即使在此修复之后,因为您只编写了一行(无追加)和,您只需打破循环你匹配1行:只写一行的2个理由。我提出以下修复方法:
receipt = None
with open('Data Base.txt', 'r') as searchfile:
for line in searchfile:
if Prod_Code in line:
print(line)
if receipt == None:
receipt = open('Receipt.txt', 'w')
receipt.write(line+"\n")
if receipt != None:
receipt.close()
只有匹配时才会创建输出文件。它在循环期间保持打开状态,因此附加了行。最后,如果需要,它会关闭文件。
请注意,如果多次执行此操作,则此类线性搜索不是最佳选择。最好将文件的内容存储在list
中,然后迭代这些行。但那是另一个故事......