Python3,读取textfile并分隔每一行并填写相应的变量

Python3,读取textfile并分隔每一行并填写相应的变量,python,list,file,readfile,Python,List,File,Readfile,首先,我用这个: with open(filename) as fp: for i, line in enumerate(fp): print(i) print(line) if i == index: break else: continue 这使我能够输出每一行,直到(i)达到索引变量的数量,但这并不是我想要的全部,我想要读取一个看起来有点像这样的文件: John

首先,我用这个:

with open(filename) as fp:
    for i, line in enumerate(fp):    
        print(i)
        print(line)
        if i == index:
            break
        else:
            continue
这使我能够输出每一行,直到(i)达到索引变量的数量,但这并不是我想要的全部,我想要读取一个看起来有点像这样的文件:

John|Graham|JOB|AGE
Philip|Jefferson|JOB|AGE
我希望能够将这些数据解析成相应的变量,但是!我希望能够指定从哪一行读取,这样我就可以读取第1行,从那里解析数据,然后是第2行,但不能像在循环中一样!,这是最重要的部分

我希望能够将变量(索引)设置为2

然后第2行将第一段“Philip”解析为变量名

等等


我希望你能理解!,我一直很沮丧,无法找到解决方案。

您可以使用字典按索引访问每一行:

the_dict = {i:a.strip('\n') for i, a in enumerate(open('filename.txt'))}
输出:

{0: 'John|Graham|JOB|AGE', 1: 'Philip|Jefferson|JOB|AGE'}

以下是一些应该有效的方法:

首先,我们需要将所有行读入一个列表

>>> with open('in.txt', 'r') as f:
>>>     lines = f.read().splitlines()
现在我们可以很好地索引:

>>> print(lines[0])
    John|Graham|JOB|AGE
好的,现在我们想把每一行分割成我们需要的数据

>>> first = lines[0]
>>> info = first.split('|')
    ['John', 'Graham', 'JOB', 'AGE']
然后将所有内容放入变量中:

>>> NAME, LASTNAME, JOB, AGE = info
>>> print(NAME)
    John
>>> print(LASTNAME)
    Graham
总而言之:

with open('in.txt', 'r') as f:
    lines = f.read().splitlines()

def get_info(lines, line_num):
    line = lines[line_num]
    return line.split('|')

NAME, LASTNAME, JOB, AGE = get_info(lines, 0)
print(NAME) # Prints "John"
如果不想同时读取整个文件,可以在脚本中使用相同的技术:

with open(filename) as fp:
    for i, line in enumerate(fp):    
        print(i)
        print(line)
        if i == index:
            NAME, LASTNAME, JOB, AGE = line.split('|')
            break

因此,您需要设置
index=2
,然后您的代码将获得Philip的行,并将他的所有数据存储到单独的变量中。对吗?查一下split()的语法我不明白为什么不在循环中读取很重要。你想解析一行还是一整组行?我同意Gribouillis的观点,你需要迭代,那么你希望怎么做呢?你会在不同的时间访问输入文件中的不同行吗?或者你只是得到一条线,就这样?通常在这种情况下,您可以(而且应该)将整个文件解析为适当的数据结构,例如列表,然后您可以根据需要多次直接索引到列表中。谢谢,PM 2Ring!编辑好了,看起来是这样!非常感谢你,这会很有帮助的@Simontaga注意到这个答案是如何将整个问题分解为可管理的小步骤的。作为一名计算机程序员,这是你需要掌握的最关键的技能之一。我希望这可以作为一个很好的例子,这样你可以在继续学习编程的过程中自己培养这项技能。祝你好运。