如何在Python中的单独变量中存储文本文件的特定行的值

时间:2015-04-01 18:41:47

标签: python

我有一个文本文件,读取此内容。

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])

3 个答案:

答案 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 = '.'(这是读取的以下行)

为防止这种情况发生,您可以将上一行分配给变量,然后将其拆分为变量ab

例如:

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'