python正则表达式re.match
大家好,我目前正在做一个python正则表达式练习,以上是我目前的代码。 在输出的末尾,如果我想在从字符串中删除整数后显示字符串的其余部分。 我可以使用什么功能 以下是一个输出示例:python正则表达式re.match,python,regex,Python,Regex,大家好,我目前正在做一个python正则表达式练习,以上是我目前的代码。 在输出的末尾,如果我想在从字符串中删除整数后显示字符串的其余部分。 我可以使用什么功能 以下是一个输出示例: import re list=["22.11","23","66.7f","123abcde","Case44","Happy","78","66.7",
import re
list=["22.11","23","66.7f","123abcde","Case44","Happy","78","66.7","yes123","Book111"]
def removeInt(list):
for str in list:
if re.match("\d+",str):
result=re.search("\d+",str)
print("Original sentence:", str)
print("Found integer",result.group(0),"at the beginning of the string, starting index",result.start(),"and ending index at index",result.end(),".The rest of the string is:"**???????????**)
removeInt(list)
我想您可以使用.find()字符串方法 find()方法返回 子字符串(如果找到)。如果未找到,则返回-1 find()方法的语法为:
str.find(子、开始、结束)
其中:
- sub-它是要在str字符串中搜索的子字符串
- 开始和结束(可选)-范围str[start:end]在其中 搜索子字符串
str.find(子、开始、结束)
其中:
- sub-它是要在str字符串中搜索的子字符串
- 开始和结束(可选)-范围str[start:end]在其中 搜索子字符串
重新导入
列表=[“22.11”、“23”、“66.7f”、“123abcde”、“Case44”、“Happy”、“78”、“66.7”、“yes123”、“Book111”]
def删除(列表):
对于列表中的str:
result=re.match(([^\d]*)(\d+)(.*),str)
如果结果不是无:
打印(“原始句子:”,str)
打印(“找到整数”,
结果:第(2)组,
“在字符串中,从索引开始”,
结果。开始(2),
“并以索引结尾”,
结果:完(二),
。字符串的其余部分是:“,result.group(1)+result.group(3))
移除(列表)
输出:
原文:22.11
在字符串中找到整数22,从索引0开始,到索引2结束。字符串的其余部分是:.11
原文:23
在字符串中找到整数23,从索引0开始,到索引2结束。字符串的其余部分是:
原文:66.7f
在字符串中找到整数66,从索引0开始,到索引2结束。字符串的其余部分是:.7f
原文:123abcde
在字符串中找到整数123,从索引0开始,到索引3结束。字符串的其余部分是:abcde
原句:案例44
在字符串中找到整数44,从索引4开始,到索引6结束。字符串的其余部分是:Case
原句:78
在字符串中找到整数78,从索引0开始,到索引2结束。字符串的其余部分是:
原句:66.7
在字符串中找到整数66,从索引0开始,到索引2结束。字符串的其余部分是:.7
原文:是123
在字符串中找到整数123,从索引3开始,到索引6结束。字符串的其余部分是:是
原文:第111册
在字符串中找到整数111,从索引4开始,到索引7结束。剩下的部分是:书
您可能会发现,使用组捕获数字及其前后的字符串部分会更容易。注意:我假设您不想在第一组之后匹配其他数字:
重新导入
列表=[“22.11”、“23”、“66.7f”、“123abcde”、“Case44”、“Happy”、“78”、“66.7”、“yes123”、“Book111”]
def删除(列表):
对于列表中的str:
result=re.match(([^\d]*)(\d+)(.*),str)
如果结果不是无:
打印(“原始句子:”,str)
打印(“找到整数”,
结果:第(2)组,
“在字符串中,从索引开始”,
结果。开始(2),
“并以索引结尾”,
结果:完(二),
。字符串的其余部分是:“,result.group(1)+result.group(3))
移除(列表)
输出:
原文:22.11
在字符串中找到整数22,从索引0开始,到索引2结束。字符串的其余部分是:.11
原文:23
在字符串中找到整数23,从索引0开始,到索引2结束。字符串的其余部分是:
原文:66.7f
在字符串中找到整数66,从索引0开始,到索引2结束。字符串的其余部分是:.7f
原文:123abcde
在字符串中找到整数123,从索引0开始,到索引3结束。字符串的其余部分是:abcde
原句:案例44
在字符串中找到整数44,从索引4开始,到索引6结束。字符串的其余部分是:Case
原句:78
在字符串中找到整数78,从索引0开始,到索引2结束。字符串的其余部分是:
原句:66.7
在字符串中找到整数66,从索引0开始,到索引2结束。字符串的其余部分是:.7
原文:是123
在字符串中找到整数123,从索引3开始,到索引6结束。字符串的其余部分是:是
原文:第111册
在字符串中找到整数111,从索引4开始,到索引7结束。剩下的部分是:书
只需重新使用result.end()
:打印(str[result.end():])
@Chris这只在数字位于字符串开头时有效?假设OP想要显示整个字符串减去数字,请使用re.sub()
--re.sub('\d+',''90years')
@PacketLoss因为OP使用re.match
来过滤开头带有数字的字符串,我认为这不重要。@Chris在阅读了更多内容后,似乎是有意的,注意结果打印指定字符串的开始+1使用现有切片比此处的re.sub()
更好。您对22.11
的预期结果是什么?只需重新使用result.end()
:Original sentence: “90years”
Found integer 90 at the beginning of this string, starting at index _ ending at index _. The rest of the string is: years.