0

このファイル (wordlist.txt) を開いたとします。

...
14613 bore
14614 borg
14615 boric
14616 boris
14621 born
14622 borne
14623 borneo
14624 boron
...

変数がたとえば 14623 の場合、その隣の単語を選択するにはどうすればよいですか?

4

4 に答える 4

6

これを一度だけ行う場合は、falsetru が示した方法で行ってください。

複数の数値を検索する必要がある場合は、エントリを辞書に保存します。

wordmap = {}
with open('wordlist.txt') as f:
    for line in f:
        key, value = line.split()
        wordmap[key] = value

これで、次のように任意の番号を検索できます。

>>> wordmap['14623']
borneo

あなたが追加したいかもしれないいくつかの改良:

  1. rstrip単語の終わりの改行
  2. split(None, 1)途中にスペースがある単語を処理する
  3. wordmap[int(key)]wordmap[14623]代わりに見上げることができますwordmap['14623']
  4. 全体を理解できるように 2 行で書き直します
  5. エラー処理の改善。ファイル内の行が無効な場合は、それをスキップするか、「無効な行 #1731:'glassdfefewasd'一般的な例外をダンプする代わりに、または適切なものは何でも」のような有用なエラー メッセージを出力できます。

たとえば、これは #1、#2、および #4 を行います。

with open('wordlist.txt') as f:
    wordmap = dict(line.rstrip().split(None, 1) for line in f)
于 2013-08-16T17:52:56.750 に答える
4

以下を試してください:

with open('wordlist.txt') as f:
    for line in f:
        row = line.split()
        if row[0] == '14623':
            print(row[1])
            break
于 2013-08-16T17:47:40.563 に答える
0

アイテムに一度だけアクセスしたい場合、これは非常に読みやすいです:

with open('test.txt') as f:
    print next(line.split()[1] for line in f 
               if line.startswith('14623'))
于 2013-08-16T17:52:39.327 に答える
0

正規表現の使用:

import re

line_num = 14615
print re.search(r''+str(line_num)+' (\w+)', file_text).group()
于 2013-08-16T17:55:12.137 に答える