我想删除短语中的第二部分,只要该部分的长度超过3个字符(字母和数字),并且如果字符不超过3个,则添加空格。
在以下测试集中:
CENTRAL CARE HOSPITAL/HOPITAL CENTRALE DE SOINS
ABC/DEF
FOUNDATION INSTITUTION/FUNDATION DEL INSTITUTO
HAPPY SPRING BREAK 20/20
结果应为:
CENTRAL CARE HOSPITAL
ABC DEF
FOUNDATION INSTITUTION
HAPPY SPRING BREAK 20 20
我的第一次尝试是这样的:
([^\/]+$)
但是,斜杠后的所有字符串都消失了,因为它没有任何限制。我需要包含一个否定的前瞻性声明,当斜杠后的字符串超过3个字符时,我需要删除它们:
text= re.sub(r'(^[^\/]+)(?:[\/])(?![A-Z]{3})',
r'\1 ',
text,
0,
re.IGNORECASE)
我收到以下不正确的信息:
CENTRAL CARE HOSPITAL/HOPITAL CENTRALE DE SOINS
ABC DEF
FOUNDATION INSTITUTION/FUNDATION DEL INSTITUTO
HAPPY SPRING BREAK 20 20
如何摆脱前面的斜线和字符串?
谢谢
您可以使用2个捕获组来捕获之前和之后的1-3个字符AZ或数字,并在/
替换中使用这些组,并在其之间留一个空格。
使用交替符来匹配正斜杠,然后匹配其余的要删除的字符串。
\b([A-Z0-9]{1,3})/([A-Z0-9]{1,3})\b|/.*
在替换中,使用2个捕获组
r"\1 \2"
说明
\b
词边界([A-Z0-9]{1,3})
捕获组1,匹配1-3倍AZ或一个数字/
逐字匹配([A-Z0-9]{1,3})
捕获组2,匹配1-3倍AZ或一个数字\b
词边界|
要么/.*
匹配/
和0+次除换行符以外的任何字符范例程式码
import re
regex = r"\b([A-Z0-9]{1,3})/([A-Z0-9]{1,3})\b|/.*"
text = ("CENTRAL CARE HOSPITAL/HOPITAL CENTRALE DE SOINS\n"
"ABC/DEF\n"
"FOUNDATION INSTITUTION/FUNDATION DEL INSTITUTO\n"
"HAPPY SPRING BREAK 20/20")
result = re.sub(regex, r"\1 \2", text)
print (result)
输出量
CENTRAL CARE HOSPITAL
ABC DEF
FOUNDATION INSTITUTION
HAPPY SPRING BREAK 20 20
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句