![](/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.