python - 如何将不同格式的字符串转换为 int 列表? (Python)

标签 python regex

m = re.match(r'(\d+)(?:-(\d+))?$', string)
start = m.group(1)
end = m.group(2) or start
return list(range(int(start, 10), int(end, 10) + 1))

现在它能够处理以下格式的字符串并将它们转换成列表...

'0-6' 结果为 [0,1,2,3,4,5,6]

'7' 结果为 [7]

无论如何我可以更改符号以能够处理以下格式的字符串...

'1 2 3 4 5' 结果为 [1,2,3,4,5]

最佳答案

正则表达式并不是生活的全部。在这种情况下,真的没有理由使用正则表达式。试试这个,它的速度是示例数据 '0-6 2 3-6' 上 Shawn Chin 的 to_num_list 的两倍以上(对于我尝试过的所有数据它的速度大约是原来的 1.9 到 4.5 倍):

def included_numbers(s):
    out = []
    for chunk in s.split():
        if '-' in chunk:
            f, t = chunk.split('-')
            out.extend(range(int(f), int(t)+1))
        else:
            out.append(int(chunk))
    return out

关于python - 如何将不同格式的字符串转换为 int 列表? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6585266/

相关文章:

python - Django Forms - 保存后重定向

python - Flask:在不使用 session 的情况下在 View 之间传递列表变量

c# - 如何编写正则表达式来匹配包含 XYZ 但不包含 ABC 的文本?

mysql 字符串包含在搜索字符串中

正则表达式匹配关键字之前第一次出现的情况

sql-server - 在 Microsoft SQL Server 上使用正则表达式模式最多提取三个不同长度的字符串

python - 再次点击按钮时出错

python - 带参数的 Windows 子进程

java - 正则表达式将名字/姓氏与可选标题相匹配