我在python 2.7上遇到以下错误。 '你好'是文本文件中一行的最后一个单词。以下解决方案对我不起作用ValueError: invalid literal for int() with base 10: 'Height (mm)'
ValueError: invalid literal for int() with base 10: 'hello.'
执行以下代码时
import io
with io.open(r'C:\Python\Data\somefile.txt','r+') as f:
bytecolumn = (line.rsplit(None,1)[1] for line in f)
bytes = (int(x) for x in bytecolumn if x != '-')
print('Total', sum(bytes))
我也尝试过使用
int(float(x))
但它会抛出错误
ValueError: could not convert string to float: hello.
P.S - 我在堆栈溢出中查看了所有类似的问题,没有一个解决方案有效。这是发布的原因。请不要标记重复
修改:我正在尝试查找单词的大小。这就是我做总和并调用生成器的原因
答案 0 :(得分:0)
以下解决方案有效。我们需要使用
,而不是使用int(x)
len(x.encode('utf-8'))
所以最终的代码更新为
import io
with io.open(r'C:\Python\Data\somefile.txt','r+') as fp:
bytecolumn = (line.rsplit(None,1)[1] for line in fp)
bytes = ( len(x.encode('utf-8')) for x in bytecolumn if x != '-')
print('Total', sum(bytes))