【问题标题】:Raw string for variables in python?python中变量的原始字符串?
【发布时间】:2014-10-14 06:29:59
【问题描述】:

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

【问题讨论】:

  • 从文件中读取时,反斜杠被解释为 Python 字符串转义。是什么让您认为从文件中读取实际上是这样做的?
  • ^ 同意。如果你只是从一个文件中打印出类似于 6253\342\200\2236387 的行,你会看到 \'s 打印得很好。只需迭代文件,strip() 行和 split('\\'),你就会得到一个数字列表。
  • 我收到此错误 UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 4: ordinal not in range(128) 所以它似乎将其读取为破折号而不是转义字符。
  • 向我们展示您尝试运行的实际代码以及部分输入文件。

标签: python encode rawstring


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我不久前创建了这个。这有助于您写入 csv 文件。

    def write2csv(fileName,theData):
    
        theFile = open(fileName+'.csv', 'a')
    
        wr = csv.writer(theFile, delimiter = ',', quoting=csv.QUOTE_MINIMAL)
    
        wr.writerow(theData)
    

    【讨论】:

      【解决方案3】:

      文本文件包含...

      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 中出现了额外的空白记录。

      【讨论】:

      • 它是一个 .csv。我需要输出是一列中的整个字符串。
      • 啊,对不起。误解了。 :-(
      猜你喜欢
      • 2014-03-03
      • 1970-01-01
      • 2018-01-23
      • 2022-10-15
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2016-11-29
      • 2022-08-18
      相关资源
      最近更新 更多