【问题标题】:How to recognize special eol character when I see it, using Python?当我看到它时如何识别特殊的 eol 字符,使用 Python?
【发布时间】:2013-09-25 06:33:56
【问题描述】:

我正在使用 Python 抓取一组原始 pdf 文件。让他们发短信后,我在把行尾弄出来时遇到了很多麻烦。我无法弄清楚行分隔符是什么。麻烦的是,我还是不知道。

这不是'\n',或者,我认为不是'\r\n'。但是,我设法隔离了这些特殊字符之一。我确实将它保存在内存中,通过调用my_str.replace(eol, ''),我可以从我的一个文件中删除所有这些字符。

所以我的问题是开放式的。当谈到 unicode 等时,我有点迷茫。我怎样才能在我的文件中识别这个字符而不诉诸一些荒谬的事情,比如序列化它然后读入它?有没有办法可以将它称为代码?我无法让 Python 产生它实际的样子。如果我打印它,或者调用unicode(special_eol),我所看到的只是它作为换行符的功能用法中的字符。

请帮忙!谢谢,如果我遗漏了一些明显的东西,我们深表歉意。

【问题讨论】:

  • print repr(eol) 和/或print eol.encode('unicode_escape') 和/或print ord(eol),然后向我们展示输出。
  • 所有个 unicode 码点都可以用一个 unicode 转义序列来表示,但如果没有更多细节,我们无法告诉您哪个转义码是正确的。
  • 哇,你完全知道我需要输入什么。嗯,我有点尴尬,因为它是一个'\ n'。我不明白,因为我试过str.rstrip('\n')
  • .rstrip('\n') 只删除字符串末尾的换行符;也许它也出现在字符串的其他地方?也可以看看str.splitlines()
  • 好吧,这解决了我的困惑。由于我确实想删除所有这些,.replace('\n', '') 就足够了。非常感谢!

标签: python file-io unicode newline


【解决方案1】:

要确定具体是什么字符,您可以使用 str.encode('unicode_escape')repr() 来获取(在 Python 2 中)字符的 ASCII 可打印表示:

>>> print u'☃'.encode('unicode_escape')
\u2603
>>> print repr(u'☃')
u'\u2603'

【讨论】:

  • 我后来再次使用了这个,我需要提取一个不同的奇怪字符,它有一个很好的 '\x0c' utf-8 表示。
猜你喜欢
  • 1970-01-01
  • 2020-12-18
  • 2018-02-10
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 2014-04-25
  • 2013-01-05
相关资源
最近更新 更多