首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从python中的列表中删除空格

从python中的列表中删除空格
EN

Stack Overflow用户
提问于 2021-11-15 17:44:53
回答 1查看 51关注 0票数 2

我想用正斜杠替换字符串中的反斜杠,但是在这样做时需要遵循以下几点:

如果有两个或多个连续的反斜杠,那么所有的反斜杠都应该被看作是一个单独的反斜杠,并且需要转换成一个正斜杠。

例如:

输入:r‘’Removing\\空格\space\from\a\list‘输出:'Removing/white/spaces/from/a/list'

  1. 如果在两个反斜杠之间有一个或多个空白或空格,则应该从输出中移除空格后面的字符串部分。这是只需要替换反斜杠,直到空白。

例如:

输入:r‘’Removing\空格\\space\from\a\list‘输出: Removing/white

我尝试了以下方法,但如果有三个连续的反斜杠,并且在尝试删除空白时也抛出错误,它将不会给出正确的输出:

代码语言:javascript
运行
复制
def function(String,SeparIn,SeparOut): 
     TAG = String.split(SeparIn)
     for i in range(len(TAG)):
          if len(TAG[i])==0:
               TAG.remove(TAG[i])
     for i in range(len(TAG)):        
          if TAG[i]=="  " :
               del TAG[i:len(TAG)]


     # initialize an empty string
     RESULT =SeparOut

     # traverse in the string  
     RESULT=RESULT.join(TAG) #joining the string elements by the new delimiter 

     # return string  
  return RESULT
  String=r'Removing\\  \\white\\spaces\\from\\a\\list'
  SeparIn=r'\\'
  SeparOut='/'
  function(String,SeparIn,SeparOut)

如果有三个连续的反斜杠,上面的代码输出如下:

代码语言:javascript
运行
复制
input:
    String=r'Removing\\\white\\spaces\\from\\a\\list'
    SeparIn=r'\\'
    SeparOut='/'
    function(String,SeparIn,SeparOut)

Output my code prints:
    'Removing/\\white/spaces/from/a/list'

The output that I want :
     'Removing/white/spaces/from/a/list'

如果有空格,上面的代码将引发以下错误:

代码语言:javascript
运行
复制
     IndexError                                Traceback (most recent call last)
    <ipython-input-88-37b8d8f131c7> in <module>()
      20 SeparIn=r'\\'
      21 SeparOut='/'
 ---> 22 function(String,SeparIn,SeparOut)

     <ipython-input-88-37b8d8f131c7> in function(String, SeparIn, SeparOut)
       5             TAG.remove(TAGELEM[i])
       6     for i in range(len(TAG)):
 ----> 7         if TAG[i]=="  " :
       8             del TAG[i:len(TAG)]
       9 

  IndexError: list index out of range

如果有人事先知道这个.Thanks的解决方案,请帮助!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-15 17:50:17

您可以对re.subsplitstrip使用正则表达式。

代码语言:javascript
运行
复制
def func(s):
    import re
    return re.sub('\\+', '/', s.split()[0]).strip('/')
代码语言:javascript
运行
复制
>>> func('Removing\\\white\\spaces\\from\\a\\list')
'Removing/white/spaces/from/a/list'

>>> func(r'Removing\\white\\  \\spaces\\from\\a\\list')
'Removing/white'

作为一个有参数的函数

代码语言:javascript
运行
复制
def func(String, SeparIn='\\', SeparOut='/'):
    SeparIn = re.escape(SeparIn)
    return re.sub(f'{SeparIn}+', SeparOut, String.split()[0]).strip('/')

func('Removing\\\white\\ \\spaces\\from\\a\\list')
# 'Removing/white'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69978636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档