Python:list strip overkill

时间:2017-06-24 07:10:26

标签: python list

我只想删除' .SI'在列表中但是通过删除列表中包含S或I的任何内容会过度杀伤。

ab = ['abc.SI','SIV.SI','ggS.SI']
[x.strip('.SI') for x in ab]
>> ['abc','V','gg']

output which I want is 
>> ['abc','SIV','ggS']

任何优雅的方式吗?因为我的列表很长,所以不想使用for循环

4 个答案:

答案 0 :(得分:3)

为什么脱衣服?你可以使用$user_info = wp_get_current_user(); if($user_info->exists()){ define("USERINFO_MEMBERID", $user_info->memberid); define("USERINFO_USERNAME", $user_info->username); define("USERINFO_EMAIL", $user_info->email); define("USERINFO_TRIAL", $user_info->trial); }

[x[:-3] for x in ab]

输出:

.replace()

(这会在任何地方移除[x.replace('.SI', '') for x in ab] ,如果你想在最后删除它,请查看其他答案)

文档中解释了['abc', 'SIV', 'ggS'] 不起作用的原因:

  

chars参数不是前缀或后缀;相反,它的所有值组合都被剥离了

因此它会删除作为参数传递的字符串中的任何字符。

答案 1 :(得分:3)

如果您想仅从末尾删除子字符串,实现此目的的正确方法是:

>>> ab = ['abc.SI','SIV.SI','ggS.SI']
>>> sub_string = '.SI'

#       checks the presence of substring at the end
#                                   v
>>> [s[:-len(sub_string)] if s.endswith(sub_string) else s for s in ab]
['abc', 'SIV', 'ggS']

因为str.replace()(如TrakJohnson's answer)中所述,即使它位于字符串的中间,也会删除子字符串。例如:

>>> 'ab.SIrt'.replace('.SI', '')
'abrt'

答案 2 :(得分:2)

使用此wp_get_current_user()

答案 3 :(得分:1)

使用function count(str, letter) { var num = 0; for (var i = 0; i < str.length; i++) if (str.charAt(i) == letter) num += 1; return num; } console.log(count("BBC", "B")); //output 2 代替function count(str, letter) { var num = 0; for (var i = 0; i < str.length; i++) { if (str.charAt(i) == letter) num += 1; return num; } } console.log(count("BBC", "B")); //outputs 1 并获取第一个元素:

split