在python中删除字符串中的空白字符

2024-04-20 16:11:00 发布

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

我已经筑巢了列表.in这个列表,每个嵌套的列表包含两个组件,每个组件可能包含空白('')字符。我想删除并编写了一段代码,但无法完成工作。怎么做我能克服这个问题吗?在

列表的嵌套列表是:

[['bike', '2 * wheel+1* frame'], ['wheel', '1  * rim + 1* spoke +1 *hub'], ['rim', 60], ['spoke', 120], ['hub', '2*gear+1*axle'], ['gear', 25], ['axle', '5*bolt+7*nut'],['bolt',0.1], ['nut', 0.15],['frame', '1*rearframe+ 1*frontframe'],['rearframe', 175],['frontframe', '1*fork+2*handle'], ['fork', 22.5],['handle', 10.0]]

如图所示,有些字符串中有一些空格。在

我写的python代码:

^{pr2}$

Tags: 代码列表组件forkframehubgearwheel
3条回答

请改用for循环。在

def blanks(lis):
    for i, _ in enumerate(lis):
        for j in range(2):
            if isinstance(lis[i][j], str):
                lis[i][j] = lis[i][j].replace(' ', '')
    return lis

清单理解也可以。在

^{pr2}$

或者没有函数定义:

lis = [[i.replace(' ', '') if isinstance(i, str) else i for i in a] for a in lis]

我想这应该是你想要的。但是,如果嵌套列表的深度不一致,最好使用生成器函数。在

def blanks(lis):
    for i, el in enumerate(lis):
        if isinstance(el, list):
            blanks(el)
        elif isinstance(el, str):
            yield el.replace(' ', '')
        else:
            yield el

有关最后一段代码的更多信息,请参见this answer。在

这是一种方法:

map(lambda x:map(lambda y:y.replace(' ','') if isinstance(y,str) else y,x),a)

其中a是您传递的输入列表。在

试试这个:

def removeBlanks(input):

  if type(input) is list:
    ret=[]
    for i in input:
      ret.append(removeBlanks(i))
  else:
    ret=input.replace(" ", "")

  return ret   

相关问题 更多 >