我正试图从字符串中的数字范围中得到一个列表。我如何在Python 3中做到这一点?
我想转换以下字符串:
s = "1-4, 6, 7-10"
列入这份清单:
l = [1, 2, 3, 4, 6, 7, 8, 9, 10]
发布于 2020-05-27 15:41:25
您可以首先对','
字符进行拆分。如果您找到一个值,只需转换为int
。如果你找到一个破折号,转换成一个整数的范围。
def listify(s):
output = []
for i in s.split(','):
if '-' in i:
start, stop = [int(j) for j in i.split('-')]
output += list(range(start, stop+1))
else:
output.append(int(i))
return output
>>> listify("1-4, 6, 7-10")
[1, 2, 3, 4, 6, 7, 8, 9, 10]
发布于 2020-05-27 15:45:46
你有一个可以有int或者范围的列表,
您可以迭代并单独处理它们。
In [8]: series = []
In [9]: for token in "1-4, 6, 7-10".split(","):
...: token = token.strip()
...: if token.isnumeric():
...: series.append(int(token))
...: else:
...: s, e = tuple(map(int, token.split("-")))
...: # splits "4-6" and converts to int
...: series.extend(list(range(s, e+1)))
...:
In [10]: series
Out[10]: [1, 2, 3, 4, 6, 7, 8, 9, 10]
发布于 2020-05-27 15:55:03
如下所示:
s = "3-12, 7, 1, 3-6"
d = []
for l in s.split(', '):
if '-' in l:
q = l.split('-')
for n in range(int(q[0]),int(q[1])+1):
d.append(n)
else:
d.append(int(l))
print(d)
输出:
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 7, 1, 3, 4, 5, 6]
https://stackoverflow.com/questions/62047044
复制相似问题