queryfile.txtをソースファイルとして使用します。これは、各行を検索してdatafile.txtと照合するために使用されます。しかし、datafile.txtの構造は異なります。別のファイルからの入力を使ってテキストを検索する[Python]
queryfile.txtは次のようになります。
Gina Cooper
Asthon Smith
Kim Lee
datafile.txtは次のようになりながら:
Gina Cooper
112 Blahblah St., NY
Leigh Walsh
09D blablah, Blah
Asthon Smith
another address here
Kim Lee
another address here
私はそれの後に名前と行を取得する必要があります。要約すると
with open('querfile.txt', 'r') as input_file:
input_addresses = set(names.rstrip() for names in input_file)
with open('datafile.txt', 'r') as data_file:
data_addresses = set(names.rstrip() for names in data_file)
with open('names_address.txt', 'w') as output:
names_address=("\n".join(input_addresses.intersection(data_addresses)))
output.write(names_address)
、私は私のOUTFILE(names_address.txt)で見たいものの名前PLUSされています。ここではdstrombergから変更されたコード(https://stackoverflow.com/a/19934477)がある両方のファイルに名前を一致取得するコードは、です基本的に次の行である名前に対応するアドレス。私はちょうど1ヶ月前にPythonを使い始めました。そして、私は立ち往生していると信じています。助けてくれてありがとう。
こんにちは@AlbertRothman、 提案ありがとうございます。私はこのコードを使用してこの方法を試した: 'オープン(input_filename、 'R')とINPUT_FILEとおり input_addressesの=のinput_file.readlines() オープン(data_filename、 'R')とDATA_FILEとおり \t iについての範囲(LEN(data_addresses))において:出力としてオープン( "emails.txt"、 "W")を有する data_addresses =のdata_file.readlinesを() \t \tエントリのinput_addressesで: \t \t \tエントリ場合== data_addresses [I]: \t \t \t \t output.write(data_addresses [i]が+ data_addresses [I + 1]) ' が、私はそれを繰り返すことができなかった理由はさっぱりだがinput_addressの最後の行何か案は? – jfo
Hmmm、それはエラーの内容によって異なります。それはうまくいくかのように見えますが、予期せぬ出力はエラーですか?ファイルの最後には行かないと確信していますか?あなたのコメントでは、余分な空白があるかもしれないので、ストリップへの呼び出しを削除しました。 –
私の前のコメントのコードには何のエラーもありませんでした。 data_addresses = [data_fileの名前に[names.rstrip()を使用すると、希望の出力が得られますが、空白のない単一の値の行です。ですから、私は 'output.write(data_addresses [i] +" \ n "+ data_addresses [i + 1] +" \ n ")'で書式を変更しました。それはかなり見えませんが、それは動作します。 大規模なデータセット(つまり、10万行)でこのコードを効率的にするにはどうすればよいですか? – jfo