0

以前readlinesはファイル内のすべての文を分割していましたre.findallが、それらを調べてその中の大文字を見つけたいと思っています。ただし、取得できる唯一の出力は、すべての文の大文字のセットですが、ファイル内の各文の大文字のセットが必要です。

現時点では for ループを使用してこれを試みていますが、これがこのタスクの最善の方法であるかどうかはわかりません。

入力:

Line 01: HE went to the SHOP
Line 02: THE SHOP HE went

これは私が出力として得ているものです:

[HE, SHOP, THE]

出力を取得したい:

[HE, SHOP], [THE, SHOP, HE]

これを行う方法はありますか?以下の分にコーディングを入れました。ありがとう!

import re, sys

f = open('findallEX.txt', 'r')

lines = f.readlines()

ii=0

for l in lines:
    sys.stdout.write('line %s: %s' %(ii, l))
    ii = ii + 1

for x in l
    re.findall('[A-Z]+', l)
print x
4

2 に答える 2

2

その方法は以下のようなものだと思います。

txt = """HE went to the SHOP
THE SHOP HE went"""

result = []
for s in txt.split('\n'):
    result += [re.findall(r'[A-Z]+', s)]

print(result) # prints [['HE', 'SHOP'], ['THE', 'SHOP', 'HE']] 

または、リスト内包表記を使用します (少し読みにくい):

txt = """HE went to the SHOP
    THE SHOP HE went"""

print([re.findall(r'[A-Z]+', s) for s in txt.split('\n')])
于 2013-04-17T17:37:10.067 に答える
0

データが本当にその形式 (完全に大文字の単語) である場合、正規表現は必要ありません。isupperだけで十分です。

with open('findallEX.txt') as f:
    for line in f.readlines():
        print [word for word in line.split() if word.isupper()]

例を追加しました。

于 2013-04-17T20:15:47.637 に答える