le texte est:
WYATT - Ranked # 855 with 0.006 %
XAVIER - Ranked # 587 with 0.013 %
YONG - Ranked # 921 with 0.006 %
YOUNG - Ranked # 807 with 0.007 %
Je veux obtenir seulement
WYATT
XAVIER
YONG
YOUNG
J'ai essayé :
(.*)?[ ]
Mais ça me donne le:
WYATT - Ranked
Regex est inutile pour cela. Utilisez simplement some_string.split(' ', 1)[0]
ou some_string.partition(' ')[0]
.
Utilisez cette regex
^\w+
\w+
Correspond à 1 à plusieurs caractères.
\w
Est similaire à [a-zA-Z0-9_]
^
Décrit le début d'une chaîne
à propos de votre regex
Votre regex (.*)?[ ]
Devrait être ^(.*?)[ ]
ou ^(.*?)(?=[ ])
si vous ne voulez pas d'espace
Vous n'avez pas besoin d'un regex
. string[: string.find(' ')]
Si vous voulez vous sentir particulièrement sournois, vous pouvez l'écrire ainsi:
(firstWord, rest) = yourLine.split(maxsplit=1)
Ceci est censé apporter le meilleur des deux mondes:
maxsplit
lors de la scission avec des espacesJe suis tombé en amour avec cette solution et sa capacité de décompression générale, donc je devais la partager. :)
Vous devriez faire quelque chose comme:
print line.split()[0]
Vous n'avez pas besoin de regex pour diviser une chaîne sur des espaces:
In [1]: text = '''WYATT - Ranked # 855 with 0.006 %
...: XAVIER - Ranked # 587 with 0.013 %
...: YONG - Ranked # 921 with 0.006 %
...: YOUNG - Ranked # 807 with 0.007 %'''
In [2]: print '\n'.join(line.split()[0] for line in text.split('\n'))
WYATT
XAVIER
YONG
YOUNG