[英]Python file opening with quote inside newline parameter
我有一个tsv文件,其内容如下:
'"1"\t"2"\t"3"\t"4"\n'
'"5"\t"6\n7"\t"8"\t"9"\n'
我希望能够忽略双引号内的\\ n符号,但是文件的readline()方法将其读取为:
1 2 3 4
5 6
7 8 9
我想要的是:
1 2 3 4
5 6\n7 8 9
我试图将其传递给newline参数:
f = open('file.tsv', newline = '"\n')
f = open('file.tsv', newline = '\"\n')
但是我明白了
ValueError: illegal newline value: "
Readline方法不会对类似tsv的字符串进行parse,而只是按原样读取内容。 Python提供了CSV包来读取此类文件:
import csv
with open('test.csv') as csvfile:
reader = csv.reader(csvfile, delimiter='\t', quotechar='"')
for row in reader:
print(', '.join(row))
阅读更多关于在文档中支持此包。
顺便说一句,使用newline参数的技巧将引发错误,因为它可以是None
, ''
, '\\n'
, '\\r'
和'\\r\\n'
。
请注意,换行符仅适用于文本模式。
更新 :
请参见下面的带有topicstarter数据的示例:
from io import StringIO
file = StringIO("""'"1"\t"2"\t"3"\t"4"'
'"5"\t"6\n7"\t"8"\t"9"'""")
reader =csv.reader(file, delimiter='\t', quotechar='"')
for row in reader:
print(row)
输出:
['\'"1"', '2', '3', "4'"]
['\'"5"', '6\n7', '8', "9'"]
因此,它可以按预期工作-打开文件时无法正确执行拆分, csv.reader
使用文件对象而不是行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.