使用python中的正则表达式删除空格之前的所有内容

时间:2017-01-02 10:18:00

标签: python regex

假设我有一个字符串:997 668,现在我需要在空格之前删除任何内容,即我需要668作为输出。我需要使用正则表达式的解决方案。现在我使用以下内容:

x = '997 668'
x  = x.split(' ')[1]

上面也给出了输出但是当只有一个数字时失败,如果x = 555则输出变为空白,我不想要。

4 个答案:

答案 0 :(得分:4)

不是获取一件商品中的第一件商品或两件商品中的第二件商品,而只需使用[-1]获取最后一件商品:

>>> '996 668'.split()[-1]
'668'
>>> '668'.split()[-1]
'668'

答案 1 :(得分:1)

如果你有点防守,你自己的代码会起作用

try:
   x = '997 668'
   x  = x.split(' ')[1]
except IndexError:
   x = x[0]

答案 2 :(得分:1)

如果您的输入有多个空格,例如

235 989 877

然后你的问题有些含糊不清,因为你没有说是要删除第一个空格之前的所有内容还是最后一个空格之前的所有内容。

TigerhawkT3的回答删除了最后一个空格之前的所有内容。

如果要在第一个空格之前删除所有内容,则需要第split个第二个参数,并按以下方式执行:

>>> '996 668'.split(' ', 1)[-1]
'668'
>>> '996'.split(' ', 1)[-1]
'996'
>>> '996 351 980 221'.split(' ', 1)[-1]
'351 980 221'

请注意,TigerhawkT3的答案(顺便说一下,这很棒)给出了另一种解释的答案:

>>> '996 351 980 221'.split()[-1]
'221'

取决于你想要的东西。

只是不要使用正则表达式。 :)

答案 3 :(得分:0)

正则表达式解决方案:

import re
re.findall('\d+', x)[-1]

re.findall始终返回一个列表,这样您就可以避免使用IndexError而不使用异常捕获器。