How to get the first word in the string

后端 未结 6 816
梦毁少年i
梦毁少年i 2020-12-05 04:07

text is :

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


        
相关标签:
6条回答
  • 2020-12-05 04:13

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

    0 讨论(0)
  • 2020-12-05 04:18

    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
    
    0 讨论(0)
  • 2020-12-05 04:22

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

    0 讨论(0)
  • 2020-12-05 04:26

    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:

    • optimality tweak with maxsplit while splitting with any whitespace
    • improved reliability and readability, as argued by the author of the technique.

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

    0 讨论(0)
  • 2020-12-05 04:26

    You shoud do something like :

    print line.split()[0]
    
    0 讨论(0)
  • 2020-12-05 04:35

    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

    0 讨论(0)
提交回复
热议问题