удаление странных двойных кавычек (из файла excel) в строке python

Я загружаю файл excel в python3, используя xlrd. В основном это строки текста в электронной таблице. На некоторых из этих строк стоят кавычки. Например, одна строка может быть:

Она сказала: «Меня зовут Дженнифер».

Когда я читаю их в python и превращаю в строки, двойные кавычки читаются как странный символ двойной кавычки, который выглядит как двойная кавычка, выделенная курсивом. Я предполагаю, что где-то по пути python прочитал символ как какой-то иностранный символ, а не фактические двойные кавычки из-за какой-то проблемы с кодировкой или чего-то еще. Итак, в приведенном выше примере, если я назначу эту строку как «текст», то у нас будет что-то вроде следующего (хотя это не совсем так, поскольку я на самом деле не печатаю строку, поэтому представьте, что «текст» уже назначен заранее) :

text = 'She said, “My name is Jennifer.”'
text[10] == '"'

Вторая строка выдаст False, потому что, похоже, она не распознает его как обычный символ двойной кавычки. Я работаю в терминале Mac, если это имеет значение.

Мои вопросы: 1. Есть ли способ легко убрать эти странные двойные кавычки? 2. Есть ли способ, когда я читаю файл, чтобы Python правильно распознавал их как двойные кавычки?


person plam    schedule 28.10.2014    source источник
comment
Это Unicode: — это U+201C, а — это U+201D. Вам нужно будет заменить их на ", что означает U+0022.   -  person Jonathan Leffler    schedule 28.10.2014


Ответы (1)


Я предполагаю, что где-то по пути python прочитал символ как какой-то иностранный символ

Да; он прочитал это, потому что это то, что на самом деле представляют данные файла.

а не фактические двойные кавычки из-за какой-то проблемы с кодировкой или чего-то еще.

С кодировкой проблем нет. Фактический символ не является «фактической двойной кавычкой».

Есть ли способ легко убрать эти странные двойные кавычки?

Вы можете использовать метод .replace для строк, как обычно, чтобы заменить их «фактической двойной кавычкой» или ничем.

Есть ли способ, когда я читаю в файле, чтобы python правильно распознавал их как двойные кавычки?

Если вы ищете их, вы можете сравнить их с персонажем, которым они на самом деле являются.

Как отмечено в комментарии, скорее всего, это U+201C LEFT DOUBLE DOUBLE QUOTATION MARK и U+201D ПРАВАЯ ДВОЙНАЯ КАВАТЫ. Они используются для того, чтобы открывающие и закрывающие кавычки могли выглядеть по-разному (изгибаясь в разные стороны), что обычно и делает красивая типографика (в отличие от использования ", которое просто более удобно для программистов). Вы представляете их в Python с помощью escape-последовательности Unicode, таким образом:

text[10] == '\u201c'

Вы также могли бы напрямую запросить эту информацию у Python, запросив text[10] в командной строке Python (которая оценит это и покажет вам представление) или явно в сценарии, например, с помощью print(repr(text[10])).

person Karl Knechtel    schedule 28.10.2014