我尝试使用一些简单的代码将数字与字符串分开:
d=['72olle' ,'103doo', '100ya']
def only_digit (data):
return ''.join(filter(lambda x: x.isdigit(),(i for i in data)))
for i in d:
print(only_digit(i))
print(only_digit(i for i in d))
无法得知为什么第一次打印有效但第二次打印无效
答案 0 :(得分:0)
您可以使用这种不同的方法执行相同的操作,而且我认为更容易理解。使用findall()模块中的re函数:
import re
d=['72olle' ,'103doo', '100ya']
print([re.findall(r'\d+', i)[0] for i in d])
输出:
['72', '103', '100']
答案 1 :(得分:0)
这应该为您提供有关传递给only_digit函数的内容以及返回的内容的一些信息。
d=['72olle' ,'103doo', '100ya']
def only_digit (data):
print(type(data)," => ",data)
theReturn = ''.join(filter(lambda x: x.isdigit(),(i for i in data)))
print(type(theReturn)," => ",theReturn)
return theReturn
for i in d:
print(only_digit(i))
print(only_digit(i for i in d))
输出:
>>> for i in d:
... print(only_digit(i))
...
<type 'str'> => ' 72olle '
<type 'str'> => ' 72 '
72
<type 'str'> => ' 103doo '
<type 'str'> => ' 103 '
103
<type 'str'> => ' 100ya '
<type 'str'> => ' 100 '
100
>>> print(only_digit(i for i in d))
<type 'generator'> => ' <generator object <genexpr> at 0x0000000001F764C8> '
<type 'str'> => ' '