python中变量的原始字符串?

时间:2014-08-20 19:03:19

标签: python encode rawstring

我已经看过几篇类似的帖子,但没有解决我的问题。 我正在阅读带有反斜杠的数字列表并将其写入.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给了我一个错误。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

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

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

import codecs
f = codecs.open("test", "r", "utf-8")

答案 1 :(得分:-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中获得了额外的空白记录。

答案 2 :(得分:-1)

我创造了一段时间。这有助于您写入csv文件。

def write2csv(fileName,theData):

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

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

    wr.writerow(theData)