寻找一种有效的方法来搜索字符串中的所有整数并将它们附加到列表中。例如。 '(12,15)'应该成为[12,15]。大于9的整数应该保持连接状态,并且在附加到列表时不会分开。
如果有办法使用内置函数,lambda或list comprehension,你可以分享那些吗?感谢。
到目前为止我看起来太臃肿了。
user_input = '(3, 10)' # or '3 10'
def sti(n):
s = ''
l = []
for index, item in enumerate(n):
if item.isdigit():
s += item
if not item.isdigit():
l.append(s)
s = ''
l.append(s)
a = list(filter(None, l)) # remove spaces
a = list(map(lambda x: int(x), a)) # convert to int
return a
print(sti(user_input))
答案 0 :(得分:2)
使用正则表达式:
import re
print(list(map(int, re.findall(r'\d+', user_input))))
答案 1 :(得分:0)
如果
new_string = "lol69on420for666"
那么你可以做点什么,
for letter in new_string:
if letter == "0" or \
letter == "1" or \
...
letter == "9":
append the letter to some list
或
if "6" in new_string:
append "6" to some list
答案 2 :(得分:0)
假设没有负数,您可以将itertools.groupby
与str.isdecimal
一起使用:
>>> from operator import itemgetter
>>> from itertools import groupby
>>> list(map(int, map(''.join, map(itemgetter(1), filter(itemgetter(0), groupby('(3, 10)', str.isdecimal))))))
[3, 10]
答案 3 :(得分:0)
在不导入任何包的情况下更好。 new_list = [int(item) for item in v if item.isdigit()]
是字符串
{{1}}