【问题标题】:PDFtotext - whitespace showing as aacute on commandlinePDFtotext - 空格在命令行上显示为 aacute
【发布时间】:2011-08-07 02:39:19
【问题描述】:

我正在使用 python 从使用 pdftotext 从 pdf 创建的文本文件中提取文本。它是 2000 个文件之一,在这个特定的文件中,一行关键字以 EU 结尾。该行的其余部分对肉眼来说是空白的,下面的行也是如此。

程序通常会去掉行尾的任何尾随空白并忽略后续的空白行。

在这种情况下,它保存了在“EU.”之间的文本文件中打印出来时看到的空格,并且在 html(类似展览)中类似。

我还打印到命令行,在这里我看到了一个 aacute 字符串。 [?]

我认为解决这个问题的明显方法是搜索并替换acute。我已经尝试使用编译语句来做到这一点,并且我已经尝试过解码传入文本的排列。

奇怪的是,当我打印“\255”时,我没有得到 aacute,而是得到一个 o 坟墓。

我似乎误解了一些基本的错误组合。关于如何开始解决这个问题的任何提示?

非常感谢。

【问题讨论】:

    标签: python character-encoding removing-whitespace pdftotext


    【解决方案1】:

    第一个提示是不要使用各种未说明的编码疯狂地打印到所有可能的输出机制。找出你有什么。这样做:

    print repr(the_line_with_the_problem) # Python 2.x
    print(ascii(the_line_with_the_problem)) # Python 3.x
    

    编辑您的问题并复制/粘贴结果。

    第二个提示:寻求帮助时,请提供有关您的环境的信息:

    什么版本的 Python?什么版本的操作系统?

    还显示与语言环境相关的信息;以下示例来自我在 Windows 7 命令提示符窗口中运行 Python 2.7 的计算机::

    >>> import sys, locale
    >>> sys.getdefaultencoding()
    'ascii'
    >>> sys.stdout.encoding
    'cp850'
    >>> locale.getdefaultlocale()
    ('en_AU', 'cp1252')
    >>>
    

    第三个提示:不要使用自己的行话……“Simile Exhibit”、“printed to the command line”和“compile statement”这些概念需要解释。

    "\255" 的相关性是什么?你从哪里得到的?

    胡乱猜测,等待一些事实浮出水面:

    (1) 违规字符是 U+00A0 NO-BREAK SPACE aka NBSP,它在您的文本中显示为 "\xA0",当使用命令提示符窗口在 Windows 上的西欧语言环境中发送到标准输出时,将被视为编码为cp850,因此显示为 a-acute。这怎么会变成o-grave是个谜。

    (2) "\255" == \xAD 暗示违规字符是 U+00AD SOFT HYPHEN 但为什么这会被视为 o-grave 是一个谜,而且它不是“空白”;它根本不应该显示,它应该显示为连字符/减号,而不是空格。

    【讨论】:

    • 非常感谢。你解决了我的问题。我已经为“\xA0”编译了一个搜索词,然后我可以删除有问题的 NBSP。看来我们不能在不发送的情况下在这里使用换行符。这很不舒服!我还学习了如何显示有问题的代码,并了解到当我将输出从命令提示符窗口重定向到文本文件和 v.v. 时,编码会发生变化。非常感谢。
    • @jobucks:事实在哪里? “编译搜索词”是什么意思? re.compile()?? “不发送就不能在这里使用换行符”??请解释。还有,“\255”和 o-grave 到底是怎么回事?
    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 2013-04-03
    • 1970-01-01
    • 2013-01-20
    • 2019-02-04
    • 2015-07-02
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多