当前位置: 首页 > 知识库问答 >
问题:

将整数范围的字符串转换为列表[关闭]

欧阳英彦
2023-03-14

我想使用python将字符串转换成整数列表。一些例子可能是:

"1-4, 7, 9-11" into [1,2,3,4,7,9,10,11]
"5-9" into [5,6,7,8,9]
"1,2,3,10,11" into [1,2,3,10,11]
"1-3,5,6,7" into [1,2,3,5,6,7]

有没有快速简单的方法来做到这一点?

共有2个答案

谷弘致
2023-03-14

这应该可以做到!我用了你给的一个例子,你可以在循环中使用它,例如对其余的字符串。我们用逗号分开每一部分。如果零件中有“-”,那么它一定是一个范围,所以我们找到“-”符号的位置,并把它前面的数字作为范围的开始,把它后面的数字作为范围的结束。请注意,范围(N)给出了N-1之前的所有数字,所以我们使用了加1。

nums = "1-4, 7, 9-11"  # example list
nums_list = nums.split(",")  # seperate to parts

total_list = []

for part in nums_list:
    part = part.strip()
    if "-" in part:  # if it is a range of nums
        mid = part.find("-") 
        for i in range(int(part[:mid]), int(part[mid+1:])+1): # append the range
            total_list.append(i)
    else:
        total_list.append(int(part))  # else append the num

print(total_list)
仉刚洁
2023-03-14

您可以使用re模块执行任务。

例如:

import re

strings = ["1-4, 7, 9-11",
"5-9",
"1,2,3,10,11",
"1-3,5,6,7"]

for s in strings:
    out = []
    for a, b in re.findall(r'(\d+)-?(\d*)', s):
        out.extend(range(int(a), int(a)+1 if b=='' else int(b)+1))
    print('Input = {:<20} Output = {}'.format(s, out))

印刷品:

Input = 1-4, 7, 9-11         Output = [1, 2, 3, 4, 7, 9, 10, 11]
Input = 5-9                  Output = [5, 6, 7, 8, 9]
Input = 1,2,3,10,11          Output = [1, 2, 3, 10, 11]
Input = 1-3,5,6,7            Output = [1, 2, 3, 5, 6, 7]
 类似资料:
  • 我们有一个对象/数组/列表,其中有这种格式的数据-[100, 200, 300, 400,......1000]或[150, 300, 450,....1500]。这些值在nvd3图中用作yAxis值。数据点的总数总是10。 我们有一个要求,而不是将这些整数显示为yAxis点,我们需要将值显示为一个范围,如[0-99100-199200-299…900-1000]或[0-149150-299300

  • 问题内容: python中是否存在可以将不断增加的整数列表转换为范围列表的内容 例如,给定集合{0,1,2,3,4,7,8,9,11},我想得到{{0,4},{7,9},{11,11}}。 我可以编写一个程序来执行此操作,但想知道python中是否有内置函数 问题答案: 使用产生了一个简洁但棘手的实现: 输出:

  • 我正在做一些关于Java8流特性的练习,所以我想把这些知识应用到将数字串转换成整数列表的问题上 一个典型的测试看起来像

  • 问题内容: 我希望能够将诸如“ 1,2,5-7,10”之类的字符串转换为诸如[1,2,5,6,7,10]之类的python列表。我环顾四周,发现了这一点,但是我想知道是否有一种干净简单的方法可以在Python中做到这一点。 问题答案: def f(x): result = [] for part in x.split(‘,’): if ‘-‘ in part: a, b = part.split(

  • 问题内容: 我有一个整数列表,需要将其解析为一系列字符串。 例如: 等等。 我仍在学习处理列表的更多pythonic方法,这对我来说有点困难。我最近的想法是创建一个列表列表,以跟踪成对的数字: 然后,我可以遍历此结构,将每个子列表打印为范围或单个值。 我不喜欢在两次迭代中执行此操作,但是我似乎无法跟踪每次迭代中的每个数字。我的想法是做这样的事情: 这是我最近的尝试。它有效,但是我并不完全满意;我一

  • 问题内容: 我有一个清单说: 如何在不触及字符串的情况下转换预期的数字? 感谢您的帮助。 问题答案: