使用Python中的特定列号从文本文件中读取值

时间:2017-07-24 17:30:26

标签: string python-2.7 full-text-search extraction

如果我有一个大文本文件,并且我已从文本中隔离了一个特定的行,例如:

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

1 个答案:

答案 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']