如何使用split或regex从python中的字符串中获取子字符串

时间:2017-05-08 18:40:40

标签: python regex split

我在python中有一个str,如下所示。我想从中提取子字符串。

table='abc_test_01'

number=table.split("_")[1]

我的结果是test

我想要的是第一个_之后的所有内容。

我想要的结果是test_01我怎样才能实现这一目标。

5 个答案:

答案 0 :(得分:1)

你可以这样做:

import re
string = "abc_test_01"

rx = re.compile(r'[^_]*_(.+)')
match = rx.match(string).group(1)
print(match)

或者使用普通的字符串函数:

string = "abc_test_01"

match = '_'.join(string.split('_')[1:])
print(match)

答案 1 :(得分:1)

获取子字符串(第一次出现下划线后的所有字符):

number = table[table.index('_')+1:]
# Output: test_01

答案 2 :(得分:1)

你可以试试这个:

修改:感谢@valtah的评论:

table = 'abc_test_01'
#final = "_".join(table.split("_")[1:])
final = table.split("_", 1)[1]
print final 

输出:

'test_01'

@valtah在评论中的答案也是正确的:

final = table.partition("_")[2]
print final 

将输出相同的结果

答案 3 :(得分:1)

没有人提到split()函数可以有一个 maxsplit 参数:

  

str.split(sep = None,maxsplit = -1)

     

使用 sep 作为分隔符字符串,返回字符串中的单词列表。如果给出 maxsplit ,则最多 maxsplit 分割完成(因此,列表最多只有 maxsplit +1个元素)。

所以解决方案只是:

table.split('_', 1)[1]

答案 4 :(得分:1)

这是许多人已经给出的代码

table='abc_test_01'
number=table.split("_",1)[1]

但是当上述事件不在字符串中时,上述情况可能会失败,那么您将获得IndexError: list index out of range

例如。

table='abctest01'
number=table.split("_",1)[1]

上面的一个会引发IndexError,因为事件不在字符串

因此,处理此问题的更准确的代码是

table.split("_",1)[-1]

因此,-1不会造成任何伤害,因为出现次数已经设置为1。

希望有所帮助:)