问题描述
我有一个数字字符串,有时它包含字母。我必须从输入字符串中删除字母及其后的所有内容。 我尝试过:
import re
b = re.split('[a-z]|[A-Z]',a)
b = b[0]
但是,只要字符串不包含字母,这都会返回错误。
在尝试拆分字母之前,我是否需要检查a
是否包含字母?
如何检查?
两个例子:
a = '1234'
和
a = '1234h'
我想在两者之后都拥有b = '1234'
另一个例子:
我想a= '4/200,3500/ 500 h3m'
或a= '4/200,3500/ 500h3m'
来
返回类似的内容:
b= ['4','200','3500','500']
解决方法
import re
match = re.search('^[\d]+','1234h')
if match:
print(match.group(0))
它将为“ 1234”和“ 1234h”返回“ 1234” 。 在开始后会找到一系列数字,在字母后会忽略。
,list = ['1234abc','5278','abc58586']
def range_sanitizer(s,lower_bound,upper_bound):
return ''.join([x for x in s if lower_bound < x < upper_bound])
def remove_non_digits(s):
return range_sanitizer(s,'0','9')
def sanitize_list(list,sanitizer=remove_non_digits):
return [sanitizer(item) for item in list]
if '__main__' == __name__:
sanitized_list=sanitize_list(list)
# ['1234','58586']
print(sanitized_list)