首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ValueError:基数为10的int()的文本无效:‘“1”“

ValueError:基数为10的int()的文本无效:‘“1”“
EN

Stack Overflow用户
提问于 2021-06-12 11:07:16
回答 2查看 47关注 0票数 0

我正在尝试使用csv文件创建条形图,并且不断收到此消息。我的数据几乎都是整数。

代码语言:javascript
运行
复制
for item in text_list :
    pieces_list = item.strip().split(',')
    print(pieces_list)
    Month_list.append(pieces_list[0])
    Total_list.append(int(pieces_list[1]))
EN

回答 2

Stack Overflow用户

发布于 2021-06-12 11:10:14

字符串'"1"'由三个单独的字符组成:{ ", 1, " },并且"在计算整数的上下文中无效。这无疑是由于CSV允许在字段周围使用引号造成的:

代码语言:javascript
运行
复制
"has quotes", does not have quotes, "1"

您需要首先去掉字符串开头和结尾的双引号(如果它们在那里)。例如:

代码语言:javascript
运行
复制
>>> withq = '"42"'

>>> int(withq)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '"42"'

>>> int(withq.strip('"'))
42

请记住,这将剥离字符串开头和结尾的所有"字符,因此""""""""42"""仍将作为42出现。replace()将替换字符串中任意位置的引号。为了绝对安全,一个更好的选择可能是一个函数来为你做繁琐的工作:

代码语言:javascript
运行
复制
# Get integer from a string CSV field.
# If first and last characters are both '"', convert the inner bit.
# Otherwise, convert the whole thing.
# May throw if bit being converted in not valid integer.

def csv_int(field):
    if len(field) >= 2 and field[0] == '"' and field[-1] == '"':
        return int(field[1:-1])
    return int(field)
票数 1
EN

Stack Overflow用户

发布于 2021-06-12 11:11:50

看起来我在执行以下操作时遇到了同样的错误

代码语言:javascript
运行
复制
print(int('"1"'))

注意数字1周围的"

ValueError:基数为10的int()的文本无效:‘“1”“

因此,我建议您在此字符串上使用replace()或其他方法来消除这种情况。

代码语言:javascript
运行
复制
print(int('"1"'.replace('"','')))

输出

代码语言:javascript
运行
复制
1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67945301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档