我有一个文本文件,读取此内容。
a,b,c,d,e,f,g,h
a,b,c,i,j,k,l,m
f,k
现在,我想将第一行存储为列表,将第二列存储在其他列表中。但是我想在一些特定变量中存储的第三个值是a = f,b = k。
我已经制作了代码,但在阅读第三行时显示错误。 请有人帮忙。
这是我的代码。
filename = 'input.txt'
fin=open(filename,'r')
n=fin.readline()
m=fin.readline()
a,b=fin.readline()
更新:
with open('input.txt') as fin:
n=fin.readline().split()
m=fin.readline().split()
line=(fin.readline())
a,b=line[0],line[2]
i=0
for i in range(0,len(n)):
if n[i]!=a:
i+=1
cp=i-1
i=0
for i in range(0,len(n)):
if n[i]!=a:
i+=1
posa=i-1
i=0
for i in range(0,len(n)):
if m[i]!=b:
i+=1
posb=i-1
while(posa>cp):
posa-=1
while(posa>cp):
posb-=1
if(cp<0):
print("No Common Predecessor")
elif (posa<posb):
if(posa<0):
posa=0
print("Common Predecessor: %s" %n[posa])
else:
if(posb<0):
posb=0
print("Common Predecessor: %s" %m[posb])
答案 0 :(得分:4)
方法readline()
返回字符串。要获得列表,您必须使用:
m=fin.readline().strip().split(',')
n=fin.readline().strip().split(',')
a,b=fin.readline().strip().split(',')
答案 1 :(得分:1)
使用open;
with open('my.txt') as f:
lines = f.read().splitlines()
# lines[0] == 'a,b,c,d,e,f,g,h'
# lines[1] == 'a,b,c,i,j,k,l,m'
# lines[2] == 'f,k'
# lines[3] == '.'
n = list(lines[0].split(','))
m = list(lines[1].split(','))
a, b = lines[2].split(',')
# n == ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h ']
# m == ['a', 'b', 'c', 'i', 'j', 'k', 'l', 'm ']
# a == f
# b == k
然后你可以用每一行做你想做的事。
答案 2 :(得分:0)
你的问题在于a,b=fin.readline()
会执行fin.readline()
两次,给你a = 'f,k'
和b = '.'
(这是读取的以下行)
为防止这种情况发生,您可以将上一行分配给变量,然后将其拆分为变量a
和b
。
例如:
filename = 'input.txt'
fin = open(filename )
n=fin.readline().split()
m=fin.readline().split()
line=(fin.readline())
a,b=line.split(',')
b=b.strip()
使用with open
的更简化方法:
with open('input.txt') as fin:
n=fin.readline().split()
m=fin.readline().split()
line=(fin.readline())
a,b=line.split(',')
b=b.strip()
这两个approches都会产生输出:
>>> n
['a,b,c,d,e,f,g,h']
>>> m
['a,b,c,i,j,k,l,m']
>>> a
'f'
>>> b
'k'