63

たとえば、このような数字と単語で構成されたこのテキストファイルがあります。09807754 18 n 03 aristocrat 0 blue_blood 0 patrician各単語または数字が新しい行として表示されるように分割したいと思います。

ダッシュを含む単語を接続したままにしたいので、空白区切りが理想的です。

これは私がこれまでに持っているものです:

f = open('words.txt', 'r')
for word in f:
    print(word)

ここからの行き方がよくわからないので、これを出力にしたいと思います:

09807754
18
n
3
aristocrat
...
4

6 に答える 6

22
f = open('words.txt')
for word in f.read().split():
    print(word)
于 2013-06-04T16:05:39.417 に答える
1

これは、行を読んで分割する必要を回避する、完全に機能的なアプローチです。モジュールを利用しitertoolsます:

Python 3 の場合は、次のように置き換えitertools.imapてください。map

import itertools

def readwords(mfile):
    byte_stream = itertools.groupby(
        itertools.takewhile(lambda c: bool(c),
            itertools.imap(mfile.read,
                itertools.repeat(1))), str.isspace)

    return ("".join(group) for pred, group in byte_stream if not pred)

使用例:

>>> import sys
>>> for w in readwords(sys.stdin):
...     print (w)
... 
I really love this new method of reading words in python
I
really
love
this
new
method
of
reading
words
in
python
           
It's soo very Functional!
It's
soo
very
Functional!
>>>

あなたの場合、これは関数を使用する方法だと思います:

with open('words.txt', 'r') as f:
    for word in readwords(f):
        print(word)
于 2016-11-29T05:22:49.180 に答える