fal*_*lco 4 python regex string list
所以我有这个字符串列表:
teststr = ['1 FirstString', '2x Sec String', '3rd String', 'x forString', '5X fifth']
Run Code Online (Sandbox Code Playgroud)
我需要做的是从这个列表中获取包含以下内容的所有元素:
number + "x"
Run Code Online (Sandbox Code Playgroud)
要么
number + "X"
Run Code Online (Sandbox Code Playgroud)
例如,如果我有这个功能
def SomeFunc(string):
#do something
Run Code Online (Sandbox Code Playgroud)
我想得到这样的输出:
2x Sec String
5X fifth
Run Code Online (Sandbox Code Playgroud)
我在StackOverflow中找到了这个函数:
def CheckIfContainsNumber(inputString):
return any(char.isdigit() for char in inputString)
Run Code Online (Sandbox Code Playgroud)
但是这将返回每个具有数字的字符串.
如何扩展功能以获得所需的输出?
使用re.search
函数和列表理解.
>>> teststr = ['1 FirstString', '2x Sec String', '3rd String', 'x forString', '5X fifth']
>>> [i for i in teststr if re.search(r'\d+[xX]', i) ]
['2x Sec String', '5X fifth']
Run Code Online (Sandbox Code Playgroud)
\d+
匹配一个或多个数字.[xX]
匹配大写和小写x
.
通过将其定义为单独的功能.
>>> def SomeFunc(s):
return [i for i in s if re.search(r'\d+[xX]', i)]
>>> print(SomeFunc(['1 FirstString', '2x Sec String', '3rd String', 'x forString', '5X fifth']))
['2x Sec String', '5X fifth']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1911 次 |
最近记录: |