基数为10的int()的文本无效:“[7”以及如何删除括号

2024-09-29 03:40:34 发布

您现在位置:Python中文网/ 问答频道 /正文

arrx=list(map(int,input().strip().split(',')))

我正在尝试上面的代码来获取'[7,5,1,6,3,4]'的输入,但是我得到了一个错误invalid literal for int() with base 10: '[7'

有人能给我建议一条出路吗


Tags: 代码mapforinputbase错误with建议
3条回答

使用 list comprehension^{},搜索\d+(1个或多个数字):

import re
# '[7,5,1,6,3,4]'
arr = [int(i) for i in re.findall(r'\d+', input())]
print(arr)
# [7, 5, 1, 6, 3, 4]

您得到的错误是由于对输入的分析不正确:您没有删除括号:[]。从docs.strip()开始,不带参数意味着删除前导和尾随空格。和^ }在逗号上拆分(BTW,如果在输入字符串的中间有逗号,空白区域不被删除)。p>

您可以使用.strip()通过指定字符来去除它们:

arrx=list(map(int,input().strip('[] ').split(',')))

请注意,如果您的输入实际上是一个JSON列表,则可以更可靠地将其解析为JSON:

import json
arrx = json.loads(input())

如果是Python文本表达式,可以使用ast

import ast
arrx = ast.literal_eval(input())

省省力气,使用^{}

import ast

a = ast.literal_eval(input())
print(a, len(a), a[0], "and whatever you want")

相关问题 更多 >