【问题标题】:Python: Getting rid of \u200b from a string using regular expressionsPython:使用正则表达式从字符串中删除 \u200b
【发布时间】:2015-10-09 22:07:29
【问题描述】:

我有一个网络爬虫,它可以收集论坛问题,将它们分成单个单词并将其写入文本文件。单词存储在元组列表中。每个元组包含单词及其频率。就这样……

[(u'move', 3), (u'exploration', 4), (u'prediction', 21),
 (u'find', 5), (u'user', 2), (u'interface', 2), (u'pleasant', 2),
 (u'am', 11), (u'puzzled', 2), (u'find', 5), (u'way', 5),
 (u'prediction', 21), (u'mode', 2), (u'have', 21),
 (u'explored', 2), (u'file', 9), (u'Can', 7), (u'help', 6),
 (u'Possible', 1), (u'bug', 2), (u'data', 31), (u'is', 17)

但是,论坛上的某些人使用了字符 \u200b,它破坏了我的所有代码,因为该字符不再是 Unicode 空格。

(u'used\u200b', 1)

打印出来不会产生错误,但写入文本文件会产生错误。我发现string.strip()string.replace() 没有帮助,所以我想知道如何使用正则表达式库来摆脱那个字符。我计划解析整个元组列表以找到它。

【问题讨论】:

  • 为什么说它不是 Unicode 空白字符?这就是字面意思。 U+200B

标签: python regex unicode


【解决方案1】:

我用 python 2.7 进行了测试。 replace 按预期工作:

>>> u'used\u200b'.replace(u'\u200b', '*')
u'used*'

剥离也是如此:

>>> u'used\u200b'.strip(u'\u200b')
u'used'

请记住,这些函数的参数必须是 Unicode 文字。它应该是u'\u200b',而不是'\u200b'。注意开头的u

实际上,将该字符写入文件就可以了。

>>> import codecs
>>> f = codecs.open('a.txt', encoding='utf-8', mode='w')
>>> f.write(u'used\u200bZero')

查看资源:

【讨论】:

  • split()replace 不是正确的方法,因为您不会总是遇到\u200
  • @Kasramvd 您可以为strip 提供多个字符作为参数。还有很多方法可以替换多个字符(例如,使用正则表达式)。
【解决方案2】:

在我的情况下,您可以打开文件 C:\Users\SOMEN\AppData\Local\Programs\Python\Python37-32\lib\encodings*cp1252.py* 但它应该是一样。

decoding_table = (
'\x00'     #  0x00 -> NULL
'\x01'     #  0x01 -> START OF HEADING
'\x02'     #  0x02 -> START OF TEXT
'\x03'     #  0x03 -> END OF TEXT
'\x04'     #  0x04 -> END OF TRANSMISSION
'\x05'     #  0x05 -> ENQUIRY
'\x06'     #  0x06 -> ACKNOWLEDGE
'\x07'     #  0x07 -> BELL
'\x08'     #  0x08 -> BACKSPACE
'\t'       #  0x09 -> HORIZONTAL TABULATION
'\n'       #  0x0A -> LINE FEED
'\x0b'     #  0x0B -> VERTICAL TABULATION
'\x0c'     #  0x0C -> FORM FEED
'\r'       #  0x0D -> CARRIAGE RETURN
'\x0e'     #  0x0E -> SHIFT OUT
'\x0f'     #  0x0F -> SHIFT IN
'\x10'     #  0x10 -> DATA LINK ESCAPE
'\x11'     #  0x11 -> DE
#add the character code here
'\u200b' #add this in the file and save it.

【讨论】:

  • 这是 HORRIBLY 糟糕的建议。
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多