例如,如果我有一个大的文本文件,并且已经从文本中分离出一个特定的行:
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发布于 2017-07-24 20:24:40
如果您的文件中的数据的结构方式使您的“列”始终位于相同的字符位置,则只需使用切片获取所需的内容:
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']https://stackoverflow.com/questions/45286642
复制相似问题