我正在从文本文件中读取数据。文件中的数据具有结构
<level number> <tag> <argument>
0 @I5@ INDI
1 NAME Rosy /Huleknberg/
2 GIVN Rosy
2 SURN Huleknberg
2 _MARNM Vettle
1 SEX F
1 BIRT
2 DATE 15 SEP 1928
1 DEAT Y
2 DATE 10 MAR 2010
1 FAMS @F3@
0 @I6@ INDI
1 NAME Roger /Rsoberg/
2 GIVN Roger
2 SURN Rsoberg
2 _MARNM Rsoberg
1 SEX M
1 BIRT
2 DATE 23 JAN 1928
1 FAMS @F2@
我想读取这些数据并将各自的值存储在3个变量“levelnumber”、“tag”和“argument”中
我写了下面的代码来做这个操作
testfile = open ('test.dat')
for line in gedcom_file:
lines = line.strip()
a = lines[:1]
data.append(a)
b = lines [1]
data.append(b)
c =lines [2:]
data.append(c)
并得到以下输出(显示几行输出)
0
@I5@ INDI
1
NAME Rosy /Huleknberg/
2
GIVN Rosy
2
SURN Huleknberg
2
_MARNM Vettle
1
SEX F
1
我的输出是
<levelnumber>
<tag> <argument>
我希望他们都在同一条线上
<levelnumber> <tag> <argument>
如何更正代码?有没有其他更好的方法来完成这个任务?你知道吗
第一部分。解析文件
这部分代码没有按您的预期执行:
lines
是一个字符串。所以lines[:1]
是字符串的第一个字符,lines[1]
是字符串的第二个字符,lines[2:]
是字符串的其余部分。你知道吗相反,在剥离字符串之后,您希望使用^{} 将其拆分为单词。第二个参数告诉它只在前两个空格处拆分,这样结果列表的第三个元素就可以包含空格:
或者更简洁地说:
第二部分。打印列表
一旦处理完毕并有了要打印的列表,就可以使用^{} 将其组合成一个空格分隔的字符串。例如:
问题描述不清楚,但我希望这会有所帮助:
应该使用
line.split()
方法而不是line.strip()
记住
print('string')
将在输出的末尾添加换行符。print('string', end='')
输出没有换行符。你知道吗相关问题 更多 >
编程相关推荐