J'ai une liste de chaînes. Certains d'entre eux contiennent une date et un horodatage à la fin, mais la plupart ne le font pas. Le format Date / Heure sera toujours le même format.
if 'MM.DD.YYYY' in sampleString:
samplestring = samplestring.split('MM.DD.YYYY')[0]
print(sampleString)
>>>['String 1', 'String2', 'String 3']
4 Réponses :
On dirait que vous pouvez utiliser la fonction recherche code> à partir du module re code>
Je pense que cela retire les données / l'heure de mes cordes comme je voudrais, mais cela revient ['S', 'T', 'R', 'I', 'N', "G", "1", etc.....]
J'ai été capable de faire du vôtre en supprimant la déclaration "I pour i dans" à la fin et en remplaçant la scission (i) et la recherche (i) avec ma variable (c'est déjà dans une boucle déjà, accrochant chaque variable dans le liste). Également. Pourriez-vous m'expliquer comment (R »\ b \ d {2} \. \ D {2} \. \ D {4} \ B") fonctionne?
import re
input = ['String 1', 'String2', 'String 3 05.24.2019 04:48:24']
# compile our regex
r = re.compile(r'(.+) \d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2}$')
# take first part
output = [r.sub(r'\1', s) for s in ls]
print(ls)
# ['String 1', 'String2', 'String 3']
clarification for regex:
\d: matches any number
\.: literal dot
{n}: repeat the previous token exactly n times
$: matches at the end of the string
:: literal colon
J'ai pu utiliser @rakesh répondre et obtenir le mien pour travailler. Mais merci beaucoup pour votre réponse! Ça vous dérange d'expliquer quoi (R '(. +) \ D {2} \. \ D {2} \. \ D {4} \ D {2}: \ d {2}: \ d {2} $' ' ) Est-ce que?
['String 1', 'String2', 'String 3']
Juste une autre solution, sans regex compilé et avec une syntaxe claire de regex.
Il est moins générique, cela ne fonctionne qu'avec votre entrée précise, une chaîne suivie d'un espace et du format date-heure comme spécifié.
import re
def remove_date(s):
if re.search("\d\d:\d\d:\d\d$", s): return s[:-20] // remove the last 20 characters
else: return s
sampleString = ['String 1', 'String2', 'String 3 05.24.2019 04:48:24']
sampleString = list(map(remove_date, sampleString))
print(sampleString)