0

私には独特の問題があります。Python を使用して (txt ファイルから) 事前定義されたオフセット範囲に存在する部分文字列のみを読み取る必要があります。5-8 と 12-16 としましょう。

たとえば、ファイル内の行が次のような場合:

abcdefghi akdhflskdhfhglskdjfhghsldk

次に、「efgh」と「kdhfl」という 2 つの単語を読みたいと思います。単語「efgh」では、文字「e」のオフセットが 5 で、「h」のオフセットが 8 であるためです。同様に、他の単語「kdhfl」も同様です。

空白もオフセットに追加されることに注意してください。実際、私のファイルの空白はすべての行で「一貫性が発生」しておらず、関心のある単語を抽出するために依存することはできません。そのため、オフセットを利用する必要があります。

質問を明確にすることができたと思います。

答えを待っています!

編集 -

はい、各行の空白の量は変更される可能性があり、オフセットも考慮されます。たとえば、次の 2 行について考えてみます。

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 に答える