我只想删除' .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循环
答案 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