Необработанная строка для переменных в Python?

Я видел несколько подобных постов по этому вопросу, но ничто не решило мою проблему. Я читаю список чисел с обратной косой чертой и записываю их в.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 ответа

r перед строкой только для определения строки. Если вы читаете данные из файла, он уже "сырой". Вам не нужно делать ничего особенного при чтении ваших данных.

Обратите внимание, что если ваши данные не являются простыми ascii, вам может понадобиться их декодировать или читать в двоичном виде. Например, если данные имеют вид utf-8, вы можете открыть файл следующим образом:

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

Я создал это некоторое время назад. Это поможет вам записать в CSV-файл.

def write2csv(fileName,theData):

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

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

    wr.writerow(theData)

Текстовый файл содержит...

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" в качестве типа открытия файла. Я получал дополнительные пустые записи в моем CSV при использовании только "а".

Другие вопросы по тегам