从列表中删除元素的某些字符

时间:2015-11-13 15:40:21

标签: python python-2.7 python-3.x

如果我有一个列表,如

List1 = ['I- m', 'I-m', 'I- m-', 'I@ am']
L2=[]
for l1 in list1:
    L2.append(l1.strip('@-'))  

如果-@连接到由空格分隔的单词,如何删除-@L2=['I m','I-m', 'I m', 'I am'] 。例如,我必须从项目0,2和3中删除 <TimePicker android:layout_width="300dp" android:layout_height="300dp" android:id="@+id/timePicker" /> 但不是1,因为I-m已连接且是同一个单词。

项目0,2和3之间有空格。

结果应如下所示:

TimePicker timePicker = (TimePicker) findViewById(R.id.timePicker);

timePicker.setIs24HourView(true); // to set 24 hours mode
timePicker.setIs24HourView(false); // to set 12 hours mode

但是,我可以从项目的第二个单词中删除@。我无法从任何项目的第一个单词中删除。

我希望这是有道理的。

2 个答案:

答案 0 :(得分:2)

如果字符串中有空格,您可以使用re.sub将字符替换为空字符串:

>>> [re.sub(r'[@-]',r'',i) if ' ' in i else i for i in List1]
['I m', 'I-m', 'I m', 'I am']

答案 1 :(得分:1)

最好的方法是迭代列表并应用正则表达式

import re
map(lambda x: re.sub("[\-@]([ ]|$)", "\g<1>",x), ['I- m', 'I@m', 'I-m', 'I- m-', 'I@ am'])
['I m', 'I@m', 'I-m', 'I m', 'I am']