首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pytagcloud与base 10:‘3的int() ValueError无效文本

Pytagcloud与base 10:‘3的int() ValueError无效文本
EN

Stack Overflow用户
提问于 2015-12-06 16:42:19
回答 1查看 111关注 0票数 0

总是会犯这个错误

代码语言:javascript
复制
  ValueError: invalid literal for int() with base 10: '3),'

从文本文件中读取的内容如下:

代码语言:javascript
复制
[('cloud', 3), 
('words', 2), 
('code', 1), 
('word', 1), 
('appear', 1)]

正如您所看到的,我尝试用word.replace()替换一些东西

代码语言:javascript
复制
from pytagcloud import create_tag_image, make_tags
from pytagcloud.lang.counter import get_tag_counts


counts = []
with open("terms.txt") as FIN:
   for line in FIN:
  
       # Assume lines look like: word, number
       word,n = line.strip().split()
       word = word.replace(',', '')
       word = word.replace("'", "")
       word = word.replace("(", "")
       word = word.replace("[", "")
       word = word.replace(")", "")
       word = word.replace(" ", "")
       n = n.replace("'", "")
       n = n.replace(" ", "")

       counts.append([word,int(n.strip())])

       tags = make_tags(counts, maxsize=120)
create_tag_image(tags, 'cloud_large.png', size=(1200, 800), fontname='Crimson Text')

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-06 18:09:55

发生这种情况是因为您没有替换n中的所有非数字字符。现在,从现有代码开始的最简单的解决方案(最小的更改)是替换这一行:

代码语言:javascript
复制
counts.append([word,int(n.strip())])

出自:

代码语言:javascript
复制
counts.append([word, int(n.strip(",)]"))])

当然,代码可以改进/简化,但是需要进行更多的更改。下面是一个示例(从您提供的代码片段中替换这段代码):

代码语言:javascript
复制
with open("terms.txt") as FIN:
    for line in FIN:

        # Assume lines look like: word, number
        word,n = line.strip().split()
        word = word.replace(',', '')
        word = word.replace("'", "")
        word = word.replace("(", "")
        word = word.replace("[", "")
        word = word.replace(")", "")
        word = word.replace(" ", "")
        n = n.replace("'", "")
        n = n.replace(" ", "")

        counts.append([word,int(n.strip())])

出自:

代码语言:javascript
复制
with open("terms.txt") as FIN:
    for line in FIN:
        word, n = line.strip("[](), \r\n").split()
        counts.append([word.strip("',"), int(n.strip())])

有第三种形式,但它使用评估 (这是非常不鼓励的);这是如何获取counts内容的方法(请注意,这里将是元组列表,而不是列表列表):

代码语言:javascript
复制
counts = []
with open("terms.txt") as FIN:
    counts = eval(FIN.read())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34119943

复制
相关文章

相似问题

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