How to get the first word in the string

Question:

text is :

WYATT    - Ranked # 855 with    0.006   %
XAVIER   - Ranked # 587 with    0.013   %
YONG     - Ranked # 921 with    0.006   %
YOUNG    - Ranked # 807 with    0.007   %

I want to get only

WYATT
XAVIER
YONG
YOUNG

I tried :

(.*)?[ ]

But it gives me the :

WYATT    - Ranked
Asked By: Vor

||

Answers:

Use this regex

^w+

w+ matches 1 to many characters.

w is similar to [a-zA-Z0-9_]

^ depicts the start of a string


About Your Regex

Your regex (.*)?[ ] should be ^(.*?)[ ] or ^(.*?)(?=[ ]) if you don’t want the space

Answered By: Anirudha

Regex is unnecessary for this. Just use some_string.split(' ', 1)[0] or some_string.partition(' ')[0].

Answered By: Silas Ray

You don’t need regex to split a string on whitespace:

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
Answered By: Lev Levitsky

Don’t need a regex.
string[: string.find(' ')]

You shoud do something like :

print line.split()[0]
Answered By: Nado

If you want to feel especially sly, you can write it as this:

(firstWord, rest) = yourLine.split(maxsplit=1)

This is supposed to bring the best from both worlds:

I kind of fell in love with this solution and it’s general unpacking capability, so I had to share it.

Answered By: Huge
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.