在python字符串中删除奇怪的双引号(来自excel文件)

时间:2014-10-28 07:50:05

标签: python regex string python-3.x punctuation

我使用xlrd将excel文件加载到python3。它们基本上是电子表格中的文本行。其中一些行是引号。例如,一行可以是:

她说,"我的名字是珍妮弗。"

当我将它们读入python并将它们变成字符串时,双引号被读作一个奇怪的双引号字符,看起来像斜体的双引号。我假设在某个地方,python在字符中读取一些外来字符而不是实际的双引号,因为某些编码问题或其他东西。所以在上面的例子中,如果我将该行分配为" text",那么我们将会有类似以下的内容(尽管不完全是因为我实际上没有输入该行,所以想象"文本"已预先分配了):

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

第二行会吐出一个False,因为它似乎并不认为它是一个普通的双引号字符。如果有所作为,我在Mac终端内工作。

我的问题是: 1.有没有办法轻松剥离这些奇怪的双引号? 2.当我在文件中读取以使python正确地将它们识别为双引号时,有没有办法?

1 个答案:

答案 0 :(得分:2)

  

我假设在某个地方,python在字符中读取一些外来字符

是;它读到了因为那是文件数据实际代表的内容。

  

而不是由于某些编码问题导致的实际双引号。

编码没有问题。实际字符不是“实际双引号”。

  

有没有办法轻松剥离这些奇怪的双引号?

您可以像平常一样使用.replace字符串方法,用“实际双引号”替换它们,或者什么也不用。

  

当我在文件中读取以使python正确地将它们识别为双引号时,有没有办法?

如果您正在寻找它们,可以将它们与实际角色进行比较。

正如评论中所述,他们很可能是U+201C LEFT DOUBLE QUOTATION MARKU+201D RIGHT DOUBLE QUOTATION MARK。使用它们是为了打开和关闭引号可以看起来不同(通过在不同方向弯曲),这通常是排版(与使用"相反,这对于程序员来说更方便)。您可以使用Unicode转义在Python中表示它们,因此:

text[10] == '\u201c'

您也可以直接向Python询问此信息,方法是在Python命令行中询问text[10](将对此进行评估并向您显示表示),或者在脚本中明确地请求print(repr(text[10]))