真正的问题可能更复杂,但就目前而言,我正在尝试做一些简单一些的事情。我试图移除两个汉字/日语字符之间的空格,但同时保持一个数字和一个字符之间的空格。下面是一个例子:
text = "今天特别 热,但是我买了 3 个西瓜。"我想得到的输出是
text = "今天特别热,但是我买了 3 个西瓜。"我尝试使用Python脚本和正则表达式:
import re
text = re.sub(r'\s(?=[^A-z0-9])','')然而,结果是
text = '今天特别热,但是我买了 3个西瓜。'所以我一直在纠结于如何保持角色和数字之间的空间?我不想使用在"3“和"个”之间添加空格的方法。
我会继续考虑的,但是如果你有这么多的ideas...Thank,请提前告诉我!
发布于 2017-06-20 10:17:31
我知道你需要移除的空格在字母之间。
使用
re.sub(r'(?<=[^\W\d_])\s+(?=[^\W\d_])', '', text)详细信息
(?<=[^\W\d_]) -在当前位置的左侧需要一个Unicode字母的正向查找\s+ - 1+空白空间(如果只需要一个,则移除+ )(?=[^\W\d_]) --这是一种积极的展望,它要求立即在当前位置的右侧使用Unicode字母。您不需要re.U标志,因为它在Python3中是默认的,但是在Python2中需要它。
您还可以使用捕获组:
re.sub(r'([^\W\d_])\s+([^\W\d_])', r'\1\2', text)在这里,不消费的旁观者被转化为消费捕获组((...))。替换模式中的\1和\2是对捕获组值的反向引用。
import re
text = "今天特别 热,但是我买了 3 个西瓜。"
print(re.sub(r'(?<=[^\W\d_])\s+(?=[^\W\d_])', '', text))
// => 今天特别热,但是我买了 3 个西瓜。https://stackoverflow.com/questions/44649804
复制相似问题