在Python中,如何删除特定字符周围的字符?

2024-05-29 05:58:02 发布

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

我有一个如下的列表。在列表的每个项目中,单独的项目由分号分隔,但每个分号周围的空间量似乎是随机的:

['New Jersey  ;   46.3% ;  Republican ;         03/10/2015', 'Pennsylvania ; 
      39.0%; Democrat    ;04/30/2012', 'Virginia .   ;54.7% ;Independent 
   ;10/25/10',       'Maryland;44.8%   ;        Democrat; 01/15/16', 'New York;  R50.9%; Republican ;                  09/22/15'] 

我希望最终输出是如下所示的列表:

['New Jersey;46.3%;Republican;03/10/2015', 'Pennsylvania;39.0%;Democrat;04/30/2012', 'Virginia;54.7%;Independent;10/25/10' ... ]

我一直在尝试^ {CD1>},但这并不是在中间删除字符。对每个可能的空格和分号组合做.replace()是我唯一的希望吗?你知道吗


Tags: 项目列表new空间字符空格yorkindependent
3条回答

使用replace函数:

>>> new_list = [val.replace(' ', '') for val in old_list]

编辑:如前所述,这会删除“newjersey”等词中的空格。相反,使用regex替换:

>>> import re
>>> new_list = [re.sub(' +\.', '', re.sub(' *; *', ';', val)) for val in old_list]
>>> new_list
 ['New Jersey;46.3%;Republican;03/10/2015',
 'Pennsylvania;39.0%;Democrat;04/30/2012',
 'Virginia;54.7%;Independent;10/25/10',
 'Maryland;44.8%;Democrat;01/15/16',
 'New York;R50.9%;Republican;09/22/15']
old_list = ['New Jersey  ;   46.3% ;  Republican ;         03/10/2015', 'Pennsylvania ; 
  39.0%; Democrat    ;04/30/2012', 'Virginia .   ;54.7% ;Independent 
  ;10/25/10',       'Maryland;44.8%   ;        Democrat; 01/15/16', 'New York;    R50.9%; Republican ;                  09/22/15'] 


for row in old_list:
     data = [words.strip() for words in row.split(";")]
     old_list[old_list.index(row)] = ";".join(data)

这里有一个简单的方法。这一行就够了。你知道吗

s = ['New Jersey  ;   46.3% ;  Republican ;         03/10/2015', 'Pennsylvania ; 39.0%; Democrat    ;04/30/2012', 'Virginia .   ;54.7% ;Independent ;10/25/10',       'Maryland;44.8%   ;        Democrat; 01/15/16', 'New York;  R50.9%; Republican ;                  09/22/15']

new_list = [';'.join([word.strip() for word in item.split(';')]) for item in s]

这是展开形式。你知道吗

new_list = []

for item in s:
    sub_list = [word.strip() for word in item.split(';')]
    new_list.append(';'.join(sub_list))

print(new_list)

输出:

['New Jersey;46.3%;Republican;03/10/2015', 'Pennsylvania;39.0%;Democrat;04/30/2012', 'Virginia .;54.7%;Independent;10/25/10', 'Maryland;44.8%;Democrat;01/15/16', 'New York;R50.9%;Republican;09/22/15']

相关问题 更多 >

    热门问题