Python正则表达式删除中文汉字(非英文)中间的空格

背景

网络上一些文本里可能有不必要的空格,如果是中英文混杂的文本,需要删除汉字中间的空格,保留英文中间的空格,在Python里可以用re包来实现。

  • 简体中文正则表达式[\u4e00-\u9fa5](不含标点符号)
  • 空格正则表达式\s(等同于[\r\t\v\n])
  • 需要保留的内容放在括号里,后续用\1\2指代第1个括号和第2个括号里的内容

代码

原文: Hey Jane, 周 末 要 不要一起 吃早茶,叫上Jennie。

import re
x = 'Hey Jane, 周 末 要 不要一起	吃早茶,叫上Jennie。'
space_patten = re.compile(r'([\u4e00-\u9fa5])\s+([\u4e00-\u9fa5])')
x = space_patten.sub(r'\1\2', x)
print(x)
# Hey Jane, 周末 要不要一起吃早茶,叫上Jennie。
x = space_patten.sub(r'\1\2', x)
print(x)
# Hey Jane, 周末要不要一起吃早茶,叫上Jennie。

这里使用两次sub()的原因是:
第一次使用sub匹配到了[('周', '末'), ('要', '不'), ('起', '吃')],没有匹配到[('末', '要')],可见re.sub()在对文本进行搜索时,不会再次搜索已经匹配到模式的字(

如果原文不包含汉字空格汉字空格汉字模式,仅使用一个sub就够了。

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值