我在python中有一个str
,如下所示。我想从中提取子字符串。
table='abc_test_01'
number=table.split("_")[1]
我的结果是test
。
我想要的是第一个_
之后的所有内容。
我想要的结果是test_01
我怎样才能实现这一目标。
答案 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。
希望有所帮助:)