考虑一下我有一个字符串:
stringA = "values-are-10,20,30,40,50" stringB = "values-are-10"
我只需要得到字符串: 期望输出:
for stringA: 10,20,30,40,50 for stringB: 10
我试过用这个- int(''.join(filter(str.isdigit, stringA)))
int(''.join(filter(str.isdigit, stringA)))
但它删除了所有的逗号,请告诉我如何获得该格式的输出。
如果保证初始字符串始终具有相同的格式, 前缀+值,为什么不把这个子串出来,一个简单的 stringA, stringB = stringA[len(prefixA):], stringB[len(prefixB):]; 然后, list1, list2 = [int(num) for num in stringA.split(',')], [int(num) for num in stringB.split(',')]; 我应该做这项工作。。。
stringA, stringB = stringA[len(prefixA):], stringB[len(prefixB):];
list1, list2 = [int(num) for num in stringA.split(',')], [int(num) for num in stringB.split(',')];
# Add regex package import re stringA = "values-are-10,20,30,40,50" stringB = "values-are-10" #search using regex A = re.findall('[0-9]+', stringA) print(A) # ['10', '20', '30', '40', '50'] B = re.findall('[0-9]+', stringB) print(B) # ['10']
[int(v) for v in stringA.rsplit("-", 1)[-1].split(",")]
rsplit 从右侧拆分-所有数字都显示在最后一个数字之后 "-" .然后我们 split 通过 ","
rsplit
"-"
split
","
使用 re.findall 这是你的朋友:
re.findall
stringA = "values-are-10,20,30,40,50" stringB = "values-are-10" strings = [stringA, stringB] output = [re.findall(r'\d+(?:,\d+)*', s)[0] for s in strings] print(output) # ['10,20,30,40,50', '10']