Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用正则表达式删除空格之前的所有内容_Python_Regex - Fatal编程技术网

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

在python中使用正则表达式删除空格之前的所有内容,python,regex,Python,Regex,假设我有一个字符串:997668,现在我需要删除空格之前的任何内容,即我需要668作为输出。我需要一个使用正则表达式的解决方案。现在我使用的是下面的: x = '997 668' x = x.split(' ')[1] 上面也给出了输出,但当只有一个数字时失败,如果x=555,则输出为空,这是我不想要的。如果您更具防御性,您自己的代码可以工作 try: x = '997 668' x = x.split(' ')[1] except IndexError: x = x[0

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

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

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

如果您更具防御性,您自己的代码可以工作

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

不必获取一个项目的第一个或两个项目的第二个,只需使用[-1]获取最后一个项目即可:


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

235 989 877
然后,您的问题有点含糊不清,因为您没有说是要删除第一个空格之前的所有内容,还是要删除最后一个空格之前的所有内容

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

如果要删除第一个空格之前的所有内容,则需要使用第二个参数进行拆分,并按以下方式执行:

>>> '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'
这取决于你想要什么

只是不要使用正则表达式

Regex解决方案:

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

re.findall总是返回一个列表,这样您就可以避免使用索引器,而无需使用异常捕捉器。

为什么需要使用正则表达式的解决方案?正则表达式通常是不合适的,但提问者经常要求用它们来解决问题。有人强迫你使用正则表达式,这是一个家庭作业问题吗?只是好奇。x=x.split'[0]如果不在x else x.split'[1]@RadLexus中,那么捕获异常比检查数组长度更像python!正如@e4c5所说,捕获异常被认为比检查类型/属性等更具pythonic/优雅性。这就是duck类型的意义所在。
import re
re.findall('\d+', x)[-1]