python - Python 中的正则表达式替换会导致出现 ASCII 字符

标签 python regex string

我正在尝试使用正则表达式来替换某些文本中的一些问题。

字符串看起来像这样:

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/

相关文章:

ios - 忽略以小写字母开头的 swift 字母

python - MySQLdb/Python : Can't insert certain characters in the db

python - 如何使用 Turtle Graphic 绘制单个点

mysql - 在 MySQL 中使用正则表达式。它会给出出现次数吗?

Java 正则表达式模式匹配所有语言中以空格结尾的字符串

java - 这是在 java 中为字符串 append 单引号的最佳方法

python - Django 可以单独运行在 Gunicorn 上吗(没有 Apache 或 nginx)?

python - 子文件夹中的 Django 迁移

字符串的 JavaScript 正则表达式,后跟确切的字符数

python - 从字符串中删除所有特殊字符、标点符号和空格