簡體   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