我使用xlrd将excel文件加载到python3。它们基本上是电子表格中的文本行。其中一些行是引号。例如,一行可以是:
她说,"我的名字是珍妮弗。"
当我将它们读入python并将它们变成字符串时,双引号被读作一个奇怪的双引号字符,看起来像斜体的双引号。我假设在某个地方,python在字符中读取一些外来字符而不是实际的双引号,因为某些编码问题或其他东西。所以在上面的例子中,如果我将该行分配为" text",那么我们将会有类似以下的内容(尽管不完全是因为我实际上没有输入该行,所以想象"文本"已预先分配了):
text = 'She said, “My name is Jennifer.”'
text[10] == '"'
第二行会吐出一个False,因为它似乎并不认为它是一个普通的双引号字符。如果有所作为,我在Mac终端内工作。
我的问题是: 1.有没有办法轻松剥离这些奇怪的双引号? 2.当我在文件中读取以使python正确地将它们识别为双引号时,有没有办法?
答案 0 :(得分:2)
我假设在某个地方,python在字符中读取一些外来字符
是;它读到了因为那是文件数据实际代表的内容。
而不是由于某些编码问题导致的实际双引号。
编码没有问题。实际字符不是“实际双引号”。
有没有办法轻松剥离这些奇怪的双引号?
您可以像平常一样使用.replace
字符串方法,用“实际双引号”替换它们,或者什么也不用。
当我在文件中读取以使python正确地将它们识别为双引号时,有没有办法?
如果您正在寻找它们,可以将它们与实际角色进行比较。
正如评论中所述,他们很可能是U+201C LEFT DOUBLE QUOTATION MARK和U+201D RIGHT DOUBLE QUOTATION MARK。使用它们是为了打开和关闭引号可以看起来不同(通过在不同方向弯曲),这通常是排版(与使用"
相反,这对于程序员来说更方便)。您可以使用Unicode转义在Python中表示它们,因此:
text[10] == '\u201c'
您也可以直接向Python询问此信息,方法是在Python命令行中询问text[10]
(将对此进行评估并向您显示表示),或者在脚本中明确地请求print(repr(text[10]))
。