我有一个特殊的问题。我需要使用python(从txt文件中)读取那些存在于预定义偏移范围内的子串。让我们说5-8和12-16。
例如,如果文件中的行类似于:
abcdefghi akdhflskdhfhglskdjfhghsldk
然后我想读两个词 - “efgh”和“kdhfl”。因为,在“efgh”一词中,字符“e”的偏移量为5,“h”的偏移量为8.同样,另一个字“kdhfl”。
请注意,空格也会增加偏移量。事实上,我文件中的空格在每一行都不是“一致的”,并且不能依赖于提取感兴趣的单词。这就是为什么,我必须依靠补偿。
我希望我能够清楚地提出这个问题。
等待答案!
编辑 -
是的,每行中的空白量也可以改变并计算偏移量。例如,考虑这两行 -abcz d
a bc d
在这两种情况下,我都将最终字符“d”的偏移视为相同。正如我所说,文件中的空格不一致,我不能依赖它们。我需要根据他们的偏移量来拾取角色。你的答案仍然有效吗?
答案 0 :(得分:5)
假设它是一个文件,
for line in open("file"):
print line[4:8] , line[11:16]
答案 1 :(得分:1)
要从偏移量中提取片段,只需将每行读入字符串,然后使用片段([from:to])访问子字符串。
目前还不清楚你对这个不一致的空格的看法。如果空格添加到偏移量,则必须保持一致才有意义。如果空白数量可以更改但实际上考虑了偏移量,则无法可靠地提取数据。
在您添加的示例中,只要d's offset保持不变,就可以使用切片提取它。
>>> s = 'a bc d'
>>> s[5:6]
'd'
>>> s = 'abc d'
>>> s[5:6]
'd'
答案 2 :(得分:-1)
什么阻止你使用正则表达式?除了空白外,偏移量会有所不同吗?
/.{4}(.{4}).{4}(.{4})/