如何获取字符串中的第一个单词

Vor*_*Vor 54 python regex

文字是:

WYATT    - Ranked # 855 with    0.006   %
XAVIER   - Ranked # 587 with    0.013   %
YONG     - Ranked # 921 with    0.006   %
YOUNG    - Ranked # 807 with    0.007   %
Run Code Online (Sandbox Code Playgroud)

我只想得到

WYATT
XAVIER
YONG
YOUNG
Run Code Online (Sandbox Code Playgroud)

我试过了 :

(.*)?[ ]
Run Code Online (Sandbox Code Playgroud)

但它给了我:

WYATT    - Ranked
Run Code Online (Sandbox Code Playgroud)

Sil*_*Ray 135

正则表达式对此没有必要.只需使用some_string.split(' ', 1)[0]some_string.partition(' ')[0].

  • 您也可以使用 `firstword, leftoverstring = some_string.split(' ', 1)` 获取剩余的字符串 (3认同)
  • 如果第一个单词之间有多个空格,`some_string.split(None,1)[0]`将起作用。 (2认同)

小智 13

你应该做这样的事情:

print line.split()[0]
Run Code Online (Sandbox Code Playgroud)

  • 我同意。但是小优化提示:`print line.split(' ', 1)[0]`。这将拆分限制为第一个单词。 (5认同)

Hug*_*uge 11

如果你想要特别狡猾,你可以这样写:

(firstWord, rest) = yourLine.split(maxsplit=1)
Run Code Online (Sandbox Code Playgroud)

这应该是两个世界中最好的:

我有点爱上了这个解决方案,这是一般的解包能力,所以我不得不分享它.:)

  • 因为它可以避免编码错误。如果您更改了 `maxsplit` 值但未能添加额外的元组元素来解压缩额外的值,如在 `(firstWord, rest) = yourLine.split(maxsplit=2)` 中,您会收到 `ValueError: too many values to打开包装`。一个额外的好处是你不会创建一个未使用的变量 `rest`。 (3认同)
  • 在python2中,您可能无法使用关键字参数,因此您可能想像`firstWord,rest = yourLine.split(None,1)`那样去掉一些可读性。 (2认同)
  • @HuwWalters 我不明白为什么在使用 `maxsplit=1` 时用 `*` 保护自己,结果数量有限。 (2认同)

Ani*_*dha 10

使用此正则表达式

^\w+
Run Code Online (Sandbox Code Playgroud)

\w+ 匹配1到多个字符.

\w 类似于 [a-zA-Z0-9_]

^ 描绘了一个字符串的开头


关于你的正则表达式

您的正则表达式(.*)?[ ]应该是^(.*?)[ ]或者^(.*?)(?=[ ])如果您不想要空间


Ric*_*ann 7

不需要regex. string[: string.find(' ')]