我正在尝试使用正则表达式来替换某些文本中的一些问题。
字符串看起来像这样:
a = "这是一个带有空格的各种问题的短字符串"
我的正则表达式现在看起来像这样:
new_string = re.sub("[a-z][A-Z]", "\1\2", a)
。
这将获取那些缺少空格的位置(小写字母后面总是有一个大写字母),并添加一个空格。
不幸的是,输出如下所示:
这是一个短\x01\x02tring,具有各种问题\x01\x02ith 间距
我希望它看起来像这样:
b =“这是一个短字符串,存在各种间距问题”
似乎正则表达式正确匹配了我想要更改的内容的正确实例,但我的替换有问题。我认为 \1\2
意味着替换正则表达式的第一部分,添加一个空格,然后添加第二个匹配项。但出于某种原因我得到了其他东西?
最佳答案
>>> a = "Here is a shortString with various issuesWith spacing"
>>> re.sub("([a-z])([A-Z])", r"\1 \2", a)
'Here is a short String with various issues With spacing'
缺少捕获组和反斜杠转义。
你可以走得更远:
>>> a = "Here is a shortString with various issuesWith spacing"
>>> re.sub('([a-z])([A-Z])', r'\1 \2', a).lower().capitalize()
'Here is a short string with various issues with spacing'
关于python - Python 中的正则表达式替换会导致出现 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38832203/