我认为这是一个编码问题,但基本上我有一个python脚本打开一个文件,抓取一些行,然后输出到一个新文件。当我把结果输出到终端时,它们是我所期望的,但当我把它输出到一个文件时,它是作为一些编码的文本/字节?
with open("output_changed2.txt") as f:
content = f.readlines()
for i in range(1, len(content)+1):
if i % 2 == 0:
print(content[i].strip() +'|'+ content[i+2].strip())`
来自output_changed2 的样本字符串
|2009 | 2 | John Frizzell | Carrie的怀疑
0|Carrie的怀疑|John Frizzell |0|信鸽的变形和之后的美味大餐|怀疑培养信心||
在终端中,此打印为|2009|2|John Frizzell|Carrie的怀疑0|Carrie的怀疑|John Frizzell |0|信鸽的变形和之后的美味大餐|怀疑培养信心||
在输出文件中,使用另一个打开的文件进行写入,或者像myscript>gt;myfile.txt给出了三角形/问号符号。我试着打开一个临时文件并写入其中,但结果是一样的。
我试图在我的终端中获得它,这样我就可以将数据导入excel表
感谢任何帮助,提前感谢:(
您的代码不会显示如何写入文件。我想你会做一些类似的事情:
with open("output_changed2.txt") as f, open("output.txt", "wt") as output_file:
# I added this part ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
content = f.readlines()
for i in range(1, len(content) -2):
if i % 2 == 0:
print(content[i].strip() + '|' + content[i + 2].strip())
output_file.write(content[i].strip() + '|' + content[i + 2].strip())
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ writing to the file
我为output_changed2.txt
创建了此内容,因为您没有提供您的内容:
something something something
something something something
|2009|2|John Frizzell|Carrie's Suspicion
something something something
0|Carrie's Suspicion|John Frizzell|0|Defloration Of A Carrier Pigeon And The Lovely Meal It Was Afterwards|Suspicion Breeds Confidence||
something something something
something something something
它在stdout上产生以下输出:
|2009|2|John Frizzell|Carrie's Suspicion|0|Carrie's Suspicion|John Frizzell|0|Defloration Of A Carrier Pigeon And The Lovely Meal It Was Afterwards|Suspicion Breeds Confidence||
0|Carrie's Suspicion|John Frizzell|0|Defloration Of A Carrier Pigeon And The Lovely Meal It Was Afterwards|Suspicion Breeds Confidence|||something something something
同样的事情,但在output.txt
文件中只有一行:
|2009|2|John Frizzell|Carrie's Suspicion|0|Carrie's Suspicion|John Frizzell|0|Defloration Of A Carrier Pigeon And The Lovely Meal It Was Afterwards|Suspicion Breeds Confidence||0|Carrie's Suspicion|John Frizzell|0|Defloration Of A Carrier Pigeon And The Lovely Meal It Was Afterwards|Suspicion Breeds Confidence|||something something something
这是因为print
有一个默认参数end='n'
,所以除非另有说明,否则它会在每次调用后自动添加一条换行符。但write
只是准确地写出它所给出的内容。
我认为你观察到的差异来自于此。
此外,您的循环将为IndexError: list index out of range
,因为在内部您访问content[i + 2]
,但您迭代for i in range(1, len(content)+1)
,因此在某一点上,您的i
将变为len(content)
,因此i+2
是越界的。