总是会犯这个错误
ValueError: invalid literal for int() with base 10: '3),'从文本文件中读取的内容如下:
[('cloud', 3),
('words', 2),
('code', 1),
('word', 1),
('appear', 1)]正如您所看到的,我尝试用word.replace()替换一些东西
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')
发布于 2015-12-06 18:09:55
发生这种情况是因为您没有替换n中的所有非数字字符。现在,从现有代码开始的最简单的解决方案(最小的更改)是替换这一行:
counts.append([word,int(n.strip())])出自:
counts.append([word, int(n.strip(",)]"))])当然,代码可以改进/简化,但是需要进行更多的更改。下面是一个示例(从您提供的代码片段中替换这段代码):
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())])出自:
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内容的方法(请注意,这里将是元组列表,而不是列表列表):
counts = []
with open("terms.txt") as FIN:
counts = eval(FIN.read())https://stackoverflow.com/questions/34119943
复制相似问题