将字符串从txt转换为int会导致错误

时间:2014-05-06 16:04:33

标签: python

尝试从文本文件中获取这些数字:

00000
11111
22222
33333
44444

尝试从文本文件中减去我得到的总字符串,让函数以这样的方式将每行作为整数:

import linecache

with file('textfiletest.txt', 'r') as original: testfile = str(original.read())
lines = len(testfile.splitlines())
for i in range(lines):
    SID = int(testfile[5*i: -(len(testfile)-5*(i+1))])
    print SID

此代码导致打印所有行并在最后一行上出错,称其不是可转换字符。

 ValueError: invalid literal for int() with base 10: ''

注意:每行的长度为5个字符。

1 个答案:

答案 0 :(得分:3)

Python中的行读取比这简单得多,你真的过于复杂了:

with file('textfiletest.txt', 'r') as original:
    for line in original:
        if not line.strip():
            continue
        SID = int(line)
        print SID

这将逐个循环遍历文件中的行。 int()可以处理额外的空格,包括换行符,所以我们需要注意的是确保我们跳过除空格之外的空行。

您的解决方案没有考虑到换行符也会占用空间;行长度为6个字符 换行符。但是,当你清楚地找到str.splitlines()函数时,为什么要让自己变得如此困难;你可以绕过它:

for line in testfile.splitlines():
    # ...

会给你一个循环文件​​内容中的行而不会尾随换行符,当然也不需要复杂的切片计算。