0

我有一个特殊的问题。我只需要使用 python 读取(从 txt 文件中)出现在预定义偏移范围内的那些子字符串。假设 5-8 和 12-16。

例如,如果文件中的一行类似于:

abcdefghi akdhflskdhfhglskdjfhghsldk

然后我想读两个词——“efgh”和“kdhfl”。因为在单词“efgh”中,字符“e”的偏移量是5,而“h”的偏移量是8。同理,另一个单词“kdhfl”。

请注意,空格也会添加到偏移量中。事实上,我文件中的空格并不是每一行都“一致出现”,也不能依赖于提取感兴趣的单词。这就是为什么,我必须依靠抵消。

我希望我能够把问题说清楚。

等待答案!

编辑 -

是的,每行中的空白量可以改变并且也可以解释偏移量。例如,考虑这两行 -

abcz d 
a bc d 

在这两种情况下,我都认为最后一个字符“d”的偏移量是相同的。正如我所说,文件中的空格不一致,我不能依赖它们。我需要根据它们的偏移量来选择字符。你的答案还成立吗?

4

3 回答 3

5

假设它是一个文件,

for line in open("file"):
    print line[4:8] , line[11:16]
于 2009-12-26T15:17:26.847 回答
1

要从偏移中提取片段,只需将每一行读入字符串,然后使用切片 ([from:to]) 访问子字符串。

目前还不清楚你在说什么不一致的空白。如果空白添加到偏移量,它必须是一致的才有意义。如果空白量可以更改但实际上考虑了偏移量,则您无法可靠地提取数据。

在您添加的示例中,只要 d 的偏移量保持不变,您就可以通过切片提取它。

>>> s = 'a bc d'
>>> s[5:6]
'd'
>>> s = 'abc  d'
>>> s[5:6]
'd'
于 2009-12-26T14:56:39.587 回答
-1

是什么阻止你使用正则表达式?除了空格之外,偏移量是否有所不同?

/.{4}(.{4}).{4}(.{4})/
于 2009-12-26T14:58:05.560 回答