我想用正斜杠替换字符串中的反斜杠,但是在这样做时需要遵循以下几点:
如果有两个或多个连续的反斜杠,那么所有的反斜杠都应该被看作是一个单独的反斜杠,并且需要转换成一个正斜杠。
例如:
输入:r‘’Removing\\空格\space\from\a\list‘输出:'Removing/white/spaces/from/a/list'
例如:
输入:r‘’Removing\空格\\space\from\a\list‘输出: Removing/white
我尝试了以下方法,但如果有三个连续的反斜杠,并且在尝试删除空白时也抛出错误,它将不会给出正确的输出:
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)
如果有三个连续的反斜杠,上面的代码输出如下:
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'
如果有空格,上面的代码将引发以下错误:
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的解决方案,请帮助!!
发布于 2021-11-15 17:50:17
您可以对re.sub
、split
和strip
使用正则表达式。
def func(s):
import re
return re.sub('\\+', '/', s.split()[0]).strip('/')
>>> func('Removing\\\white\\spaces\\from\\a\\list')
'Removing/white/spaces/from/a/list'
>>> func(r'Removing\\white\\ \\spaces\\from\\a\\list')
'Removing/white'
作为一个有参数的函数
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'
https://stackoverflow.com/questions/69978636
复制相似问题