Python中的格式化输入

时间:2009-12-26 14:51:13

标签: python file-io textinput

我有一个特殊的问题。我需要使用python(从txt文件中)读取那些存在于预定义偏移范围内的子串。让我们说5-8和12-16。

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

abcdefghi akdhflskdhfhglskdjfhghsldk

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

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

我希望我能够清楚地提出这个问题。

等待答案!

编辑 -

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

abcz d 
a bc d 

在这两种情况下,我都将最终字符“d”的偏移视为相同。正如我所说,文件中的空格不一致,我不能依赖它们。我需要根据他们的偏移量来拾取角色。你的答案仍然有效吗?

3 个答案:

答案 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})/