网络上一些文本里可能有不必要的空格,如果是中英文混杂的文本,需要删除汉字中间的空格,保留英文中间的空格,在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就够了。

在pdf转为文本的时候,经常会多出空格,影响数据观感,因此需要去掉文本中多余的空格,而文本中的英文之间的正常空格需要保留,输入输出如下: input:我今天 赚了 10 个亿,老百姓very happy。 output:我今天赚了10个亿,老百姓very happy。 def clean_space(text): 处理多余的空格 match_regex = re.compile(u'[\u4e00-\u9fa5。\.,,::《》、\(\)()]{1} +(?<![a-zA-Z])|\d+ +| +\d+|[a-z A-Z]+') should_re 转自:https://www.toutiao.com/a6571358313189999117/?tt_from=mobile_qq&amp;utm_campaign=client_share&amp;timestamp=1530145078&amp;app=news_article&amp;utm_source=mobile_qq&amp;iid=35692403316&amp;utm_medi... 今天发现os.system()方法在传递参数时目标程序无法从参数中获取到正确的值。 此问题产生的原因大致有两个: 一是字符编码不一致导致,这个可以通过修改.py文件的编码来解决,在PyCharm的File->Settings->Editor->File Encodings设置页面可以修改响应的字符编码格式。 二是传递的参数或者路径中包含空格,导致解析的时候,包含空格的参数被分割为多个参数,导致目标程序解析错误。 src_file_name = "..\icon\心率\app_1.bm 断言:俗话的断言就是“我断定什么什么”,而正则中的断言,就是说正则可以指明在指定的内容的前面或后面会出现满足指定规则的内容, 意思正则也可以像人类那样断定什么什么,比如"ss1aa2bb3",正则可以用断言找出aa2前面有bb3,也可以找出aa2后面有ss1. 零宽:就是没有宽度,在正则中,断言只是匹配位置,不占字符,也就是说,匹配结果里是不会返回断言本身。 零宽断言正如它的名字一样,是一种零宽度的匹配,它匹配到的内容不会保存到匹配结果中去,最终匹配结果只是一个位置而已。 javas function CheckChinese(str) { //var reg = new RegExp("[\\u4E00-\\u9FFF]+", "g"); var reg = /^[\u4E00-\u9FA5\uF900-\uFA2D\u0020]*$/; return reg.test( let str = "你棒棒 是 好 ni hao 你 好" str.replace(/([^u4e00-u9fa5])(\s)(?=[^u4e00-u9fa5])/g, '$1') console.log(str.replace(/([^u4e00-u9fa5])(\s)(?=[^u4e00-u9fa5])/g, '$1')) // 你棒棒是好 ni hao 你好 今天在做一个输入框的内容,要求只能输入英文英文符号,这才去查了资料了解了一下正则表达式的匹配规则,发现还是有点难度的,这才对常用的正则表达式来进行总结一下: 1.匹配英文和数字及英文状态下的符号: 2.匹配中文(发现中文匹配要比英文难) 例如想使用正则表达式来获取一段文本中的摘要部分,有两种方法: (1)re.compile('(Abstract|ABSTRACT)(.*?)(Introduction|INTRODUCTION)',re.DOTALL),DOTALL表示:点任意匹配模式 (2)re.compile('(Abstract|ABSTRACT)([\s\S]*)(Introduction|INTRODUCTION)'...