繁体   English   中英

如何从python列表中删除转义符(\\)?

[英]How do I remove escape character (\) from a list in python?

我想从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']

我相信您正在寻找str.rstrip(),它会删除字符的最后一个实例并返回结果字符串的副本

https://docs.python.org/3.6/library/stdtypes.html#str.rstrip

因此,一遍一遍地遍历您的字符串列表


for i in range(len(cmd)):
    cmd[i] = cmd[i].rstrip('\\')

应该从字符串列表中的每个字符串中删除最后一个'\\'字符。

您可以将字符串转换为字节,然后使用带有unicode_escapebytes.decode方法作为编码来取消转义给定的字符串:

cmd = [bytes(s, 'utf-8').decode('unicode_escape') for s in cmd]

如果您确实在处理赋值语句,则应该了解Python中的原始字符串 原始字符串文字使用r前缀,如下所示:

rstr = r"raw string"
regex = r"\(.*\)"

原始字符串的目的是减少使用反斜杠字符时所需的转义量。 它旨在与其他处理引擎(例如Windows路径或正则表达式)一起使用,其中处理引擎将进行自己的反斜杠处理。 原始字符串中的转义序列更少。

您的'word\\\\\\\\*'示例通常会通过字符串反斜杠转义机制转换为word\\\\* 但是,如果要使用正好三个反斜杠的字符串,则可以说r'word\\\\\\*'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM