Py学习  »  Python

Python——如何只从中间有逗号的字符串中获取数字

wanderors • 3 年前 • 1376 次点击  

考虑一下我有一个字符串:

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)))

但它删除了所有的逗号,请告诉我如何获得该格式的输出。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128897
 
1376 次点击  
文章 [ 4 ]  |  最新文章 3 年前
Hiten Tandon
Reply   •   1 楼
Hiten Tandon    3 年前

如果保证初始字符串始终具有相同的格式, 前缀+值,为什么不把这个子串出来,一个简单的 stringA, stringB = stringA[len(prefixA):], stringB[len(prefixB):]; 然后, list1, list2 = [int(num) for num in stringA.split(',')], [int(num) for num in stringB.split(',')]; 我应该做这项工作。。。

Pranav Hosangadi Devesh Shukla
Reply   •   2 楼
Pranav Hosangadi Devesh Shukla    3 年前
# 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']
kwsp
Reply   •   3 楼
kwsp    3 年前
[int(v) for v in stringA.rsplit("-", 1)[-1].split(",")]

rsplit 从右侧拆分-所有数字都显示在最后一个数字之后 "-" .然后我们 split 通过 ","

Tim Biegeleisen
Reply   •   4 楼
Tim Biegeleisen    3 年前

使用 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']