如何从使用python的文件中读取数字仅列为整数

时间:2018-06-17 22:39:31

标签: python

我有一个这样的txt文件:

input 0 1 2 3 4 5 6 7 0
output 127 191 223 239 247 251 253 254 0

我想将整数0 1 2 3 4 5 6 7 0读入列表。 这是我的代码:

f=open('data.txt','r')
for line in f:
        if 'input' in line:
                linestr=line.strip('input')
                #linestr=list(map(int,linestr)
                print(linestr)

输出

0 1 2 3 4 5 6 7 0

但是当我添加"print(linestr[0]+1)"时,它会显示错误"TypeError: must be str, not int" 这是否意味着我得到的清单仍然不是整数? 如何在此列表中使用数字作为int? 全部

4 个答案:

答案 0 :(得分:1)

它仍然是一个字符串。通过type(linestr)进行测试。您不能将整数添加到字符串。

您需要做的是从liststr中提取每个值。这可以使用strip()轻松完成并运行此列表来获取每个值,接下来需要将其传递给int()以将每个值转换为整数,然后将其附加到带有整数的列表中,然后你可以按预期使用它:

new_liststr = []
for i in liststr.split():
    new_liststr.append(int(i))

print(new_linestr[0]+1)

或者作为单个班轮:

new_liststr = [int(i) for i in liststr.split()] 
print(new_linestr[0]+1)

答案 1 :(得分:0)

您无法在int

内加print()print(linestr[0]+1) ^ | not a str
print(int(linestr[0])+1)

你可以:

byte

答案 2 :(得分:0)

from pathlib import Path
doc="""input 0 1 2 3 4 5 6 7 0
output 127 191 223 239 247 251 253 254 0"""
Path('temp.txt').write_text(doc)

with open('temp.txt','r') as f:
    for line in f:
        if 'input' in line:
             linestr=line.strip('input')

# here is what you have accomplished:
assert linestr == ' 0 1 2 3 4 5 6 7 0\n'
assert linestr == ' '
#you are tying to do ' '+1

linelist = map(int, linestr.strip().split(' '))
assert linestr[0]+1 == 1

P.S。您的原始导入是一个糟糕的解决方法,请学习使用https://docs.python.org/3/library/csv.html

答案 3 :(得分:0)

output = []
with open('data.txt','r') as f:
    for line in f:
        l = line.split()
        if l[0] == 'input':
            output.extend(map(int, l[1:]))