2017-04-18 2 views
-1

In Python, wie Sie einen Mustertest für eine Zeichenfolge-Endung vornehmen. Also nur so etwas wie:Mustertest für Zeichenfolge, die in Python endet

"name.txt"=="*.txt" 

Ich habe versucht, die Wieder Bibliothek zu verwenden:

pattern = re.compile("*.txt") 
pattern.match("somename.txt") 

Aber das scheint offensichtlich nicht zu funktionieren. Könnte jemand seinen Code einfügen? Bitte keine Verlinkung zur re libray-Referenz. Für heute bin ich damit beschäftigt. Danke Jungs!

+1

' "name.txt" .endswith ('txt')' für einfache Suffixen. '* .txt'' ist nicht gültig,' * 'ist der Repetitionsoperator. Und "." Entspricht einem beliebigen Zeichen. Verankerung ist dein Freund für das Ende der Zeile: 'r '. * \. Txt $''. Aber ja, benutze 'fnmatch()'. – dhke

+1

Das ist kein Regex-Muster. Das gesuchte Modul ist ['fnmatch'] (https://docs.python.org/3.6/library/fnmatch.html). –

+0

@dhke ein Muster, das mit '*' beginnt, ist überhaupt nicht gültig. –

Antwort

0

Sie können endswith verwenden, um zu prüfen, ob eine Zeichenfolge mit einem angegebenen Text endet.

filename = "name.txt" 
pattern = ".txt" 

print filename.endswith(pattern) 
0

Sie können nur einen einfachen Test machen, wie:

>>> file="name.txt" 
>>> pattern=".txt" 
>>> pattern in file 
True 
1

Gerade für das Lernen, wenn Sie über die Suche nach einer Dateierweiterung mit regex Sie könnten die folgende tun, die Muster sucht gehen wollte am Ende eines vorgegebenen String (die \ Z spezifiziere am Ende passend):

import re 

pattern = re.compile(".txt\Z") 

if pattern.search('name.txt'): 
    print "Match" 
else: 
    print "No match" 
+0

Und was ich hier auch gelernt habe, ist, dass ein Muster, das True in der if-Funktion auswertet, auf merkwürdige Weise druckt, wenn es direkt ausgewertet wird. Die Auswertung von pattern.search ('name.txt') ergibt direkt: <_sre.SRE_Match object; span = (4, 8), Übereinstimmung = '. txt'> – crx

Verwandte Themen