猿问

如何从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']


慕哥6287543
浏览 838回答 2
2回答

慕斯709654

您可以将字符串转换为字节,然后使用bytes.decodewithunicode_escape作为编码的方法来取消转义给定的字符串:cmd = [bytes(s, 'utf-8').decode('unicode_escape') for s in cmd]

FFIVE

如果您确实在处理赋值语句,那么您应该了解Python 中的原始字符串。原始字符串文字使用这样的r前缀:rstr = r"raw string"regex = r"\(.*\)"原始字符串的目的是减少使用反斜杠字符时所需的转义量;它旨在与其他处理引擎(如 Windows 路径或正则表达式)一起使用,其中处理引擎将执行自己的反斜杠处理。原始字符串中的转义序列要少得多。您的示例'word\\\\*'通常会word\\*被字符串反斜杠转义机制转换为。但是,如果您想要一个正好包含三个反斜杠的字符串,您可以说r'word\\\*'.
随时随地看视频慕课网APP

相关分类

Python
我要回答