我想在Python列表中删除特定的字符。

2024-10-02 10:27:17 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的清单:

[('11 August 1902\xa0(1902-08-11)Paris, France', None), 
 ('29 July 1991(1991-07-29) (aged\xa088)Paris, France', None), 
 ('\xa0France', None), ('\xa0French Army', None), ('1921-1959', None), 
 ('General de brigade', None), 
 ('Mobile Group 2Mobile Group 1Operational Group North-West', None),
 ('World War IIFirst Indochina War*Battle of Dien Bien Phu', None)]

我想从列表中删除None'\xa0'。你知道吗

我的朋友说我需要将它转换成一个字符串来删除文本并将其转换回一个列表。如果这是唯一的方法,我将如何保持列表中的每个项目彼此独立?你知道吗


Tags: none列表groupjulygeneralxa0parisaugust
3条回答

这是一个(糟糕的)例子,说明如何做到这一点。。。不过,一种更优雅的方法是将字符串编码为iso8859-1(我认为这就是\xa0的来源)。你知道吗

my_list = [('11 August 1902\xa0(1902-08-11)Paris, France', None), 
           ('29 July 1991(1991-07-29) (aged\xa088)Paris, France', None), 
           ('\xa0France', None),
           ('\xa0French Army', None),
           ('1921-1959', None), 
           ('General de brigade', None),
           ('Mobile Group 2Mobile Group 1Operational Group North-West', None),
           ('World War IIFirst Indochina War*Battle of Dien Bien Phu', None)]

my_new_list = []

for my_item in my_list:
    tuple_first = my_item[0]

    tuple_first = tuple_first.replace('\xa0', ' ') # I think really this should be
                                                   # encoded with the ISO 8859-1 and
                                                   # in this encoding \xa0 is a non
                                                   # breaking space... but for now
                                                   # I just replace it with a space char
    my_new_list.append(tuple_first)

这是输出(每项新行)

['11 August 1902 (1902-08-11)Paris, France',
'29 July 1991(1991-07-29) (aged 88)Paris, France',
'France',
'French Army',
'1921-1959',
'General de brigade',
'Mobile Group 2Mobile Group 1Operational Group North-West',
'World War IIFirst Indochina War*Battle of Dien Bien Phu'
]

这是查看Selcuk提供的列表理解的另一种方式。你知道吗

注意:接受Selcuk的解决方案,因为它是正确的。我发布这篇文章只是为了展示列表理解与for循环相比是如何工作/看起来的

my_list = [('11 August 1902\xa0(1902-08-11)Paris, France', None), 
('29 July 1991(1991-07-29) (aged\xa088)Paris, France', None), 
('\xa0France', None), ('\xa0French Army', None), ('1921-1959', None), 
('General de brigade', None), ('Mobile Group 2Mobile Group 1Operational Group North-West', None),
 ('World War IIFirst Indochina War*Battle of Dien Bien Phu', None)]

new_list = []
for t in my_list:
    t = t[0].replace('\xa0',' ')
    new_list.append(t)

输出:

print (new_list)
['11 August 1902 (1902-08-11)Paris, France', '29 July 1991(1991-07-29) (aged 88)Paris, France', ' France', ' French Army', '1921-1959', 'General de brigade', 'Mobile Group 2Mobile Group 1Operational Group North-West', 'World War IIFirst Indochina War*Battle of Dien Bien Phu']

您不必将列表转换为字符串(这将是最糟糕的方法之一)。您可以简单地使用列表理解,例如:

>>> my_list = [
    ('11 August 1902\xa0(1902-08-11)Paris, France', None),
    ('29 July 1991(1991-07-29) (aged\xa088)Paris, France', None), 
    ('\xa0France', None), 
    ('\xa0French Army', None), 
    ('1921-1959', None), 
    ('General de brigade', None), 
    ('Mobile Group 2Mobile Group 1Operational Group North-West', None), 
    ('World War IIFirst Indochina War*Battle of Dien Bien Phu', None)]
>>> [t[0].replace('\xa0', ' ') for t in my_list]
['11 August 1902 (1902-08-11)Paris, France', '29 July 1991(1991-07-29) (aged 88)Paris, France', ' France', ' French Army', '1921-1959', 'General de brigade', 'Mobile Group 2Mobile Group 1Operational Group North-West', 'World War IIFirst Indochina War*Battle of Dien Bien Phu']

这将使用每个内部元组中的第一个元素(因此消除了第二个元素None),并用其中的单个空格(" ")替换任何\xa0字符。你知道吗

相关问题 更多 >

    热门问题