約150のテキストファイルに文字情報が入っています。各ファイルには2つのユニークな単語()アルファとブラボーが含まれており、これらのユニークな単語の間にテキストを抽出し、別のファイルに書きたいと思います。大きなテキストファイル内の2つのユニークワード間で情報を抽出する方法
手作業では2つの単語に対してCTRL + Fキーを押しながらテキストをコピーすることができます。私は多くのファイルに対してプログラム(好ましくはPython)を使ってこれを行う方法を知りたいだけです。
約150のテキストファイルに文字情報が入っています。各ファイルには2つのユニークな単語()アルファとブラボーが含まれており、これらのユニークな単語の間にテキストを抽出し、別のファイルに書きたいと思います。大きなテキストファイル内の2つのユニークワード間で情報を抽出する方法
手作業では2つの単語に対してCTRL + Fキーを押しながらテキストをコピーすることができます。私は多くのファイルに対してプログラム(好ましくはPython)を使ってこれを行う方法を知りたいだけです。
これにはregular expressionsを使用できます。今すぐファイルを読み込み、regular expressions
を適用するよりも、するopenを使用して
>>> st = "alpha here is my text bravo"
>>> import re
>>> re.findall(r'alpha(.*?)bravo',st)
[' here is my text ']
マイtest.txtというファイル
alpha here is my line
yipee
bravo
。
>>> f = open('test.txt','r')
>>> data = f.read()
>>> x = re.findall(r'alpha(.*?)bravo',data,re.DOTALL)
>>> x
[' here is my line\nyipee\n']
>>> "".join(x).replace('\n',' ')
' here is my line yipee '
>>>
正規表現を使用する代わりに、Python string.find
メソッドを使用してください。
>>>> unique_word_a = 'alpha'
>>>> unique_word_b = 'bravo'
>>>> s = 'blah blah alpha i am a good boy bravo blah blah'
>>>> your_string = s[s.find(unique_word_a)+len(unique_word_a):s.find(unique_word_b)].strip()
i am a good boy
一意の単語aと一意の単語bの複数の出現がある場合、私はどのような変更を行いますか?一意の単語aと一意の単語bの5番目の出現の間で検索する索引を作成しますか? – Amistad
a = 'alpha'
b = 'bravo'
text = 'from alpha all the way to bravo and beyond.'
text.split(a)[-1].split(b)[0]
# ' all the way to '
1のカウントを追加することで分割することができますので、分割する追加のインスタンスを探すのをやめます: 'text.split(a、1)' – PaulMcG
str.find
とその兄弟rfind
がstart
とend
引数を持っています。
alpha = 'qawsed'
bravo = 'azsxdc'
startpos = text.find(alpha) + len(alpha)
endpos = text.find(bravo, startpos)
do_something_with(text[startpos:endpos]
含まれているテキストが短く、正面に近い場合、これが最も速い方法です。
含まれるテキストが比較的大きく、使用の場合:
startpos = text.find(alpha) + len(alpha)
endpos = text.rfind(bravo)
含まれるテキストが短く、端部近傍に、使用している場合:
endpos = text.rfind(bravo)
startpos = text.rfind(alpha, 0, endpos - len(alpha)) + len(alpha)
第1の方法はどのような場合に比べて優れていますテキストの最初から2番目の検索を開始する素朴な方法。含まれているテキストに支配的なパターンがない場合に使用してください。
+1:正規表現が優れています。 – jathanism
-1(1)xは定義されていません(2)input outputモジュール?? –
@ JohnMachin: 'x'を修正しました。 – RanRag