0

現在、このコードを使用してすべての単語のリストを検索していますが、@ で始まる単語を無視する必要があります。

[@apples, peaches, oranges, @guava]

ちょうど返す:

[peaches, oranges]

words = re.compile(r'\w+')

誰かが同じことをするのを手伝ってくれますか?

4

3 に答える 3

6

なぜ正規表現はそれなしではかなり単純なタスクのように見え、正規表現は必要以上に負担がかかるように見えるのですか、なぜこれではないのですか...

f = []
for w in l:
    if not w.startswith("@"):
       f.append(w)
于 2013-08-29T05:54:33.003 に答える
6

これを試して:

[x for x in l if not x.startswith('@') ]

l元のフィルタリングされていないリストです。

または、実際のリストの代わりにジェネレーターが必要な場合は、角括弧を括弧に置き換えます。

于 2013-08-29T05:56:23.787 に答える
1

単純に否定後読みを使用できます。次のようなパターンが機能するはずです。

(?<!@)\b\w+\b

(単語境界) は、単語全体と一致することを保証するためにあることに注意してください。\bそれらがなければ、 and と一致pplesuavaます。

于 2013-08-29T05:53:50.097 に答える