我想规范化文本字符串;出于这个原因,我想保留标点符号和非字母字符(不是为了识别表情符号),但同时在每两个字母和非字母字符之间留一个空格。例如以下字符串:
"*I love u*"
"Hi, life is great:)hehe"
"I will go uni.cul"
应转换为:
"* I love u *"
"Hi , life is great :) hehe"
"I will go to uni . cul"
你能告诉我如何写一个正则表达式来做到这一点吗?提前致谢。
您可以替换此表达式的匹配项:
(?<=[^\w\s])(?=\w)|(?<=\w)(?=[^\w\s])
带空格。
例如:
re.sub(r'(?<=[^\w\s])(?=\w)|(?<=\w)(?=[^\w\s])', ' ', str)
试试这个:
x = '''*I love u*
Hi, life is great:)hehe
I will go uni.cul'''
def rep(matchobj):
return ' ' + matchobj.group(0) + ' '
print re.sub('[^a-zA-Z0-9\s]+', rep, x).strip()