2016-12-22 2 views
-2

私は現在Pythonを学んでおり、私はオンラインで見つかったコードを解読しようとしています。コードのポイントは、生の文字列をユーザー入力キーと比較し、一致した場合は生の文字列を返します。このコードのPython re.findall()目的

私は問題がこのコードでやっていることre.findall()をして理解しようとしたのです

だから、頭が[0]のデータ列が含まれている

( 'は2016年12月22日6時28分36秒'u'Kithは新時代K 59FIFTYキャップxは - ピンク'、 をU 'http://kithnyc.com/products/kith-x-new-era-59fifty-cap-pink')

キーは、生の文字列が含まれている

キー= r'Nike |私の理解から

head = self.data 
for k in key: 
    print k 
    flag=re.findall(k,str(head[0]),flags=re.I) 
    print len(flag) 
    if len(flag)>4: 
     print head[0] 

「ウルトラ、コードの目的は、キーをループしていると、それは頭に一致するかどうかを見る[0]。一致する場合、head [0]を返します。しかし、それはまだ返されて、ヘッド[0]

( '2016年12月22日6時28分36秒'、u'Kithは、新時代のK 59FIFTYキャップxは - ピンク ' をU' http://kithnyc.com/products/kith-x-new-era-59fifty-cap-pink「)

でも一致しませんが。

+0

上記のスニペットに 'return'ステートメントがないようです。 – ZdaR

+0

申し訳ありませんが、私はそれを含めませんでした。私はそれを試していただけで、代わりに印刷された '送信された'。私は今コードを編集しました – b0baboi

+1

私はあなたが必要とするものを理解しているとは思わない。おそらく 'key'正規表現にマッチする' head'の項目を返却/印刷したいでしょうか? –

答えて

0

キー正規表現と一致するアイテムを頭に印刷するとします。

使用して、その後、following code

import re 
head = ('2016-12-22 06:28:36', 'nike item', 'ultra item', 'Kith x New Era K 59FIFTY Cap - Pink', 'http://kithnyc.com/products/kith-x-new-era-59fifty-cap-pink') 
key=r'Nike|Ultra' # This is a regex pattern, matches `Nike` or `Ultra` 
for s in head:  # Iterate the items in head 
    if re.search(key, s, flags=re.I): # Search for a match in each item, case insensitively 
     print(s) # Print if found 

出力:nike itemultra item

コードでは、for k in key:というパターンの文字をループします。 re.findallでは、重複しないすべての一致が、kの1つの文字に一致して検索され、head[0]のみがチェックされ、他のすべての項目は考慮されませんでした。

関連する問題