在上一个句点之后从字符串中提取字符

时间:2015-05-26 15:43:09

标签: python regex pandas slice

我有orderedDict

dict2.items():
[('A', <function __main__.percentile_50>),
 ('B', <function numpy.core.fromnumeric.sum>),
 ('C', <function numpy.core.fromnumeric.sum>),
 ('D', <function numpy.core.fromnumeric.mean>),
 etc...

我想创建一个列,说明使用了什么描述(百分位数_50,总和,平均值等)我想找到最后一个.,然后抓住它后面的字符,直到{ {1}}。所以我最终会得到>。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

如果你的元组中有字符串,你可以在列表理解中使用split

>>> l=[('A', '<function __main__.percentile_50>'),
...  ('B', '<function numpy.core.fromnumeric.sum>'),
...  ('C', '<function numpy.core.fromnumeric.sum>'),
...  ('D', '<function numpy.core.fromnumeric.mean>')]
>>> 
>>> [(i,j.strip('>').split('.')[-1]) for i,j in l]
[('A', 'percentile_50'), ('B', 'sum'), ('C', 'sum'), ('D', 'mean')]

但是如果你有函数对象,你可以使用函数的__name__属性来提取名称:

>>> [(i,j.__name__) for i,j in l]
[('A', 'percentile_50'), ('B', 'sum'), ('C', 'sum'), ('D', 'mean')]

答案 1 :(得分:0)

使用正则表达式的解决方案之一:

(?<=\.)([^.>]+)(?=>$)

请参阅DEMO