繁体   English   中英

在newline参数中带引号的Python文件打开

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM