Python 3、读取文本文件并将每一行分开并填写相应的变量
Python 3, Read textfile and separate each line and fill in corresponding variables
首先我使用这个:
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 行,但不是在循环中!,这是重要的部分。
我希望能够将变量 ( index ) 设置为 2
然后第 2 行会将第一段 "Philip" 解析为变量 NAME。
等等。
希望你能理解!,我一直很沮丧,一直没能想出解决办法。
您可以使用字典让您通过索引访问每一行:
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
首先我使用这个:
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 行,但不是在循环中!,这是重要的部分。
我希望能够将变量 ( index ) 设置为 2
然后第 2 行会将第一段 "Philip" 解析为变量 NAME。
等等。
希望你能理解!,我一直很沮丧,一直没能想出解决办法。
您可以使用字典让您通过索引访问每一行:
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