![](/img/trans.png)
[英]Why can't I replace target string with regular expression in python?
[英]Why can’t I get rid of the L with this python regular expression?
我正在尝试使用python中的正则表达式摆脱整数结尾处的Ls:
import re
s = '3535L sadf ddsf df 23L 2323L'
s = re.sub(r'\w(\d+)L\w', '\1', s)
但是,此正则表达式甚至不会更改字符串。 我还尝试过s = re.sub(r'\\w\\d+(L)\\w', '', s)
因为我认为也许可以捕获和删除L,但这也不起作用。
我不确定您首先想对这些\\w
做什么,但是要匹配一串数字和一个L
,只需使用\\d+L
,然后删除L
即可将\\d+
部分放在捕获组中,以便您可以将其作为整个子对象使用:
>>> s = '3535L sadf ddsf df 23L 2323L'
>>> re.sub(r'(\d+)L', r'\1', s)
'3535 sadf ddsf df 23 2323'
这是实际的正则表达式:
(\d+)L
当然,这也会将例如123LBQ
转换为123BQ
,但是我在您的示例或问题描述中看不到任何表明这样做的可能或您想要的可能结果,所以……
您可以使用后置断言
>>> s = '3535L sadf ddsf df 23L 2323L'
>>> s = re.sub(r'\w(?<=\d)L\b', '', s)
>>> s
'353 sadf ddsf df 2 232'
(?<=\\d)L
断言L
以数字开头,在这种情况下用null替换''
试试这个: re.sub(r'(?<=\\d)L', '\\1', s)
它使用后向查找来找到一个数字,后跟一个“ L”。
为什么不使用IMO更具可读性的generator expression
?
>>> s = '3535L sadf ddsf df 23L 2323L'
>>> ' '.join(x.rstrip('L') if x[-1:] =='L' and x[:-1].isdigit() else x for x in s.split())
'3535 sadf ddsf df 23 2323'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.