我有一个这样的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?
全部
答案 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:]))