【问题标题】:Python different regex operation treat unicode char differently [duplicate]Python不同的正则表达式操作以不同的方式对待unicode char [重复]
【发布时间】:2014-10-15 15:43:06
【问题描述】:
line = u'in belgi\xeb.'
re.findall('\w+', line, re.UNICODE)
#result: [u'in', u'belgi\xeb']
re.sub('\w+', 'x', line, re.UNICODE)
#result: u'x x\xeb.'

u'\xeb'u'ë',如果你有兴趣的话。

所以 findall 似乎将 ë 视为 \w 而不是 sub。

【问题讨论】:

    标签: python regex


    【解决方案1】:

    您需要为其指定flags

    >>> re.sub(r'\w+','x', line, flags=re.UNICODE)
    u'x x.'
    

    注意re.sub(pattern, repl, string, count=0, flags=0)函数的第四个参数是count!

    【讨论】:

    • 那些东西让我想念强类型。
    • 一开始我很困惑,但后来我只是回顾了sub函数!
    • 是的,我没想到要检查实际签名
    【解决方案2】:

    啊,我自己想通了。它签名的区别:

    re.sub(pattern, repl, string, count=0, flags=0)
    re.findall(pattern, string, flags=0)
    

    所以第三个参数并不总是flags。解决方法很简单:

    re.sub('\w+', 'x', line, flags=re.UNICODE)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 2018-03-16
      • 1970-01-01
      • 2015-04-30
      • 2020-09-13
      • 2017-02-23
      相关资源
      最近更新 更多