2016-12-22 3 views
-2

Ich lerne gerade Python und ich versuche den Code zu entschlüsseln, den ich online gefunden habe. Der Punkt des Codes besteht darin, die rohe Zeichenfolge mit dem Benutzereingabeschlüssel zu vergleichen, und wenn sie übereinstimmt, gibt sie eine rohe Zeichenfolge zurück.Python re.findall() Zweck in diesem Code

Ich habe Probleme zu verstehen versuchen, was tut re.findall() wird in diesem Code tun

So Kopf [0] einen Datenstring enthält

('2016.12.22 06.28.36 'x u'Kith New Era K 59FIFTY Cap - Pink', u 'http://kithnyc.com/products/kith-x-new-era-59fifty-cap-pink')

Key enthält einen rohen String

key = r'Nike | ultra‘

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] 

Von meinem Verständnis, der Zweck des Codes ist durch Schlüssel zur Schleife und sehen, ob es Duelle [0]. Wenn es übereinstimmt, gibt es head [0] zurück. Es ist jedoch nach wie vor zurückkehrt, Kopf [0]

('2016.12.22 06.28.36', u'Kith x New Era K 59FIFTY Cap - Pink ' u' http://kithnyc.com/products/kith-x-new-era-59fifty-cap-pink ‚)

auch wenn es nicht übereinstimmt.

+0

Es scheint keine "Return" -Anweisung im obigen Snippet zu geben. – ZdaR

+0

Entschuldigung, ich habe das nicht aufgenommen. Ich habe es getestet und habe stattdessen "gesendet" gedruckt. Ich habe den Code jetzt bearbeitet – b0baboi

+1

Ich glaube nicht, dass wir verstehen, was Sie brauchen. Vielleicht möchten Sie einfach die Elemente in "head" zurückgeben/drucken, die mit dem 'key' regex übereinstimmen? –

Antwort

0

Es wird angenommen, dass Elemente im Kopf gedruckt werden, wenn sie mit dem Schlüsselregex übereinstimmen.

Verwenden Sie die following code dann:

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 

Ausgang: nike item und ultra item. In Ihrem Code durchlaufen Sie die Zeichen des Musters mit for k in key:. Mit re.findall wurde nach allen nicht überlappenden Übereinstimmungen gesucht, die mit einem einzelnen Zeichen in k übereinstimmen, und nur head[0] wurde überprüft, alle anderen Elemente wurden nicht berücksichtigt.