我想从python的字符串列表中删除多余的'\'。
例如,如果我的列表是这样:
cmd = ['a', 'b', '{word}\\\\*', 'd']
应该是这样:
cmd = ['a', 'b', '{word}\\\*', 'd'] # I need this exact result
如果我在分别打印每个字符串时遍历此列表,则可以得到字符串“ {word} \ *”。
同时,将其作为一个整体打印时,显示为:
['a', 'b', '{word}\\\\*', 'd']
程序:
import re
cmd = ['a', 'b', '{word}\\\\*', 'd']
for i in cmd:
print("val : ", i)
print("whole list : ", cmd)
输出:
C:\Users\Elcot>python test.py
val : a
val : b
val : {word}\\*
val : d
whole list : ['a', 'b', '{word}\\\\*', 'd']
预期结果:
whole list : ['a', 'b', '{word}\\*', 'd']
答案 0 :(得分:0)
我相信您正在寻找str.rstrip(),它会删除字符的最后一个实例并返回结果字符串的副本
Actions, Resources, and Condition Keys for Amazon EC2 - AWS Identity and Access Management
因此,一遍一遍地遍历您的字符串列表
for i in range(len(cmd)):
cmd[i] = cmd[i].rstrip('\\')
应从字符串列表中的每个字符串中删除最后一个'\'字符。
答案 1 :(得分:0)
您可以将字符串转换为字节,然后使用带有bytes.decode
的{{1}}方法作为编码来取消转义给定的字符串:
unicode_escape
答案 2 :(得分:0)
如果您确实在处理赋值语句,则应该了解Python中的raw strings。原始字符串文字使用r
前缀,如下所示:
rstr = r"raw string"
regex = r"\(.*\)"
原始字符串的目的是减少使用反斜杠字符时所需的转义量;它旨在与其他处理引擎(例如Windows路径或正则表达式)一起使用,其中处理引擎将进行自己的反斜杠处理。原始字符串中的转义序列更少。
您的'word\\\\*'
示例通常会通过字符串反斜杠转义机制转换为word\\*
。但是,如果您想要一个带有正三个反斜杠的字符串,则可以说r'word\\\*'
。