-1

我看过几个类似的帖子,但没有解决我的问题。我正在阅读带有反斜杠的数字列表并将它们写入.csv。显然,反斜杠会导致问题。

addr = "6253\342\200\2236387"

with open("output.csv", 'a') as w:
  write = writer(w)
  write.writerow([addr])

我发现使用 r"6253\342\200\2236387" 给了我我想要的输出,但是由于我正在从文件中读取我的输入,所以我不能使用原始字符串。我试过 .encode('string-escape') 但这给了我 6253\xe2\x80\x936387 作为输出,这绝对不是我想要的。unicode-escape 给了我一个错误。有什么想法吗?

4

3 回答 3

0

字符串前面r仅用于定义字符串。如果您正在从文件中读取数据,则它已经是“原始的”。在读取数据时,您不必做任何特别的事情。

请注意,如果您的数据不是纯 ascii,您可能需要对其进行解码或以二进制形式读取。例如,如果数据是utf-8,你可以在阅读之前像这样打开文件:

import codecs
f = codecs.open("test", "r", "utf-8")
于 2014-08-20T20:40:27.120 回答
-1

我不久前创造了这个。这可以帮助您写入 csv 文件。

def write2csv(fileName,theData):

    theFile = open(fileName+'.csv', 'a')

    wr = csv.writer(theFile, delimiter = ',', quoting=csv.QUOTE_MINIMAL)

    wr.writerow(theData)
于 2014-08-20T20:34:08.047 回答
-1

文本文件包含...

1234\4567\7890
41\5432\345\6789

代码:

with open('c:/tmp/numbers.csv', 'ab') as w:
    f = open(textfilepath)
    wr = csv.writer(w)
    for line in f:
        line = line.strip()
        wr.writerow([line])
    f.close()

这产生了一个列中包含整行的 csv。也许使用“ab”而不是“a”作为您的文件打开类型。仅使用“a”时,我的 csv 中出现了额外的空白记录。

于 2014-08-20T19:25:00.753 回答