【问题标题】:removing weird double quotes (from excel file) in python string删除python字符串中奇怪的双引号(来自excel文件)
【发布时间】:2014-10-28 07:50:05
【问题描述】:

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

她说,“我叫詹妮弗。”

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

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

第二行会吐出一个 False,因为它似乎无法将其识别为正常的双引号字符。如果这有所作为,我正在 Mac 终端中工作。

我的问题是: 1.有没有办法轻松去掉这些奇怪的双引号? 2.当我读入文件时,有没有办法让python正确地将它们识别为双引号?

【问题讨论】:

  • 它们是 Unicode: 是 U+201C, 是 U+201D。您需要将它们替换为 ",即 U+0022。

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


【解决方案1】:

我假设在此过程中,python 将字符读取为一些外来字符

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

由于某些编码问题或其他原因,而不是实际的双引号。

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

有没有办法轻松去掉这些奇怪的双引号?

您可以像往常一样使用字符串的.replace 方法,将它们替换为“实际双引号”或不替换。

当我读入文件时,有没有办法让 python 正确地将它们识别为双引号?

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

如评论中所述,它们很可能是U+201C LEFT DOUBLE QUOTATION MARKU+201D RIGHT DOUBLE QUOTATION MARK。使用它们是为了使开头和结尾的引号看起来不同(通过向不同方向弯曲),这通常是漂亮的排版(而不是使用",这对程序员来说更方便)。你可以在 Python 中使用 Unicode 转义来表示它们,因此:

text[10] == '\u201c'

您也可以直接向 Python 询问此信息,方法是在 Python 命令行中询问 text[10](它将评估并显示表示形式),或者在脚本中明确地使用例如print(repr(text[10])).

【讨论】:

    猜你喜欢
    • 2013-05-14
    • 2017-11-10
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多