如果我有一个大文本文件,并且我已从文本中隔离了一个特定的行,例如:
ANBL 1 2 345678 0.9 01.2 34 56. 7.8
这样:
第1-4栏=“ANBL”
第6-7栏=“1”
第10-11栏=“”
第13-14栏=“2”,
等,
是否有一种从列号中读取信息的有效方法:6-7,10-11和13-14?
在解码文本文件时,可能存在一些值,而其他值则不存在。但是,我知道信息显示的具体列号,如果存在。类似的问题是here,但接受的答案在这种情况下不起作用,因为字符串上的.split()
会跳过可能包含信息的值。
要指定,列全部用空格分隔,并且每行中的数字不相同。这方面的一个例子是比较以下几行:
F014785236969 2 5 4 7.00 41.00 9 3.11 5.4 1.1
AJ51648705469 3 003002 1.60 13.00 17 7.0 6.0 5.4 20.00 2.2
答案 0 :(得分:0)
如果文件中的数据的结构使得“列”始终位于相同的字符位置,则可以使用切片来获得所需内容:
line = "ANBL 1 2 345678 0.9 01.2 34 56. 7.8"
print(line[0:4]) # >> ANBL
如果您知道每个col的开始和结束位置,您可以提前定义并执行类似的操作(使用第二个示例中的数据作为test.txt
的内容):
# Location of columns
cols = [(0,13), (17,18), (26,29), (29,32), (33, 38), (39, 44)]
with open('test.txt', 'r') as f:
for line in f.readlines():
data = [line[c[0]:c[1]] for c in cols]
print(data)
打印:
['F014785236969', '2', ' 5', ' 4', ' 7.00', '41.00']
['AJ51648705469', '3', '003', '002', ' 1.60', '13.00']