Python - ValueError:带有基数10的int()的无效文字:' hello'

时间:2017-08-15 22:19:56

标签: python python-2.7

我在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 - 我在堆栈溢出中查看了所有类似的问题,没有一个解决方案有效。这是发布的原因。请不要标记重复

修改:我正在尝试查找单词的大小。这就是我做总和并调用生成器的原因

1 个答案:

答案 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))