首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -如何删除汉字之间的空格,同时保留字符和数字之间的空格?

Python -如何删除汉字之间的空格,同时保留字符和数字之间的空格?
EN

Stack Overflow用户
提问于 2017-06-20 09:56:16
回答 1查看 1.5K关注 0票数 3

真正的问题可能更复杂,但就目前而言,我正在尝试做一些简单一些的事情。我试图移除两个汉字/日语字符之间的空格,但同时保持一个数字和一个字符之间的空格。下面是一个例子:

代码语言:javascript
复制
text = "今天特别 热,但是我买了 3 个西瓜。"

我想得到的输出是

代码语言:javascript
复制
text = "今天特别热,但是我买了 3 个西瓜。"

我尝试使用Python脚本和正则表达式:

代码语言:javascript
复制
import re
text = re.sub(r'\s(?=[^A-z0-9])','')

然而,结果是

代码语言:javascript
复制
text = '今天特别热,但是我买了 3个西瓜。'

所以我一直在纠结于如何保持角色和数字之间的空间?我不想使用在"3“和"个”之间添加空格的方法。

我会继续考虑的,但是如果你有这么多的ideas...Thank,请提前告诉我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-20 10:17:31

我知道你需要移除的空格在字母之间。

使用

代码语言:javascript
复制
re.sub(r'(?<=[^\W\d_])\s+(?=[^\W\d_])', '', text)

详细信息

  • (?<=[^\W\d_]) -在当前位置的左侧需要一个Unicode字母的正向查找
  • \s+ - 1+空白空间(如果只需要一个,则移除+ )
  • (?=[^\W\d_]) --这是一种积极的展望,它要求立即在当前位置的右侧使用Unicode字母。

您不需要re.U标志,因为它在Python3中是默认的,但是在Python2中需要它。

您还可以使用捕获组:

代码语言:javascript
复制
re.sub(r'([^\W\d_])\s+([^\W\d_])', r'\1\2', text)

在这里,不消费的旁观者被转化为消费捕获组((...))。替换模式中的\1\2是对捕获组值的反向引用。

Python 3在线演示

代码语言:javascript
复制
import re
text = "今天特别 热,但是我买了 3 个西瓜。"
print(re.sub(r'(?<=[^\W\d_])\s+(?=[^\W\d_])', '', text))
// => 今天特别热,但是我买了 3 个西瓜。
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44649804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档