如何在Python列表中插入原始数据(避免转义字符)
问题:列表中插入字符串时出现额外转义符怎么办?
我在编写代码时遇到一个问题:从文件读取字符串并添加到列表后,字符串里的反斜杠被自动添加了额外的转义符。比如原字符串是.\\aguser,添加到列表后打印出来变成了.\\\\aguser,但我希望列表里保留原始的字符串格式。
我的代码如下:
lsttemp = [] with open (f'{dirworklnx}/logid0101039426.txt', 'r', encoding='UTF-8') as var01: lstgerada = var01.readline().removeprefix('{').removesuffix('}').strip().split(', ') for m in lstgerada: dadosdic02 = m.strip().rstrip().lstrip().replace('}','').replace('\'','').replace(' ','') chave01 = fR"{(dadosdic02[0:-2])}" print(chave01) # 到这里都正常,得到了想要的字符串 lsttemp.append(str(chave01)) # 问题出在这:添加到列表后总是出现额外的转义符"\\" # 我希望列表里的数据和chave01的原始字符串一致 print(lsttemp)
代码输出结果
第一个print(chave01)的输出:
.\\aguser user.martins scan migrate
第二个print(lsttemp)的输出:
['.\\\\aguser', 'user.martins', 'scan', 'migrate']
解决方法
这是Python打印列表时的显示特性,列表里的字符串本身并没有额外的转义符——print(lsttemp)会输出字符串的repr()表示形式(用于调试的官方格式),而不是字符串的原始内容。
你可以通过以下方式验证:
- 遍历列表逐个打印元素:
输出会和第一个for item in lsttemp: print(item)print(chave01)的结果完全一致,显示.\\aguser而非.\\\\aguser。
如果需要让列表的打印输出看起来更贴近原始字符串格式,可以手动格式化:
# 模拟列表格式打印原始内容 print(f"['{', '.join(lsttemp)}']")
另外,代码里的chave01 = fR"{(dadosdic02[0:-2])}"可以简化为chave01 = dadosdic02[:-2],这里的f-string加原始字符串语法是多余的,dadosdic02本身已经是处理后的普通字符串。
内容的提问来源于stack exchange,提问作者Maicon Pereira
相关产品推荐
相关产品推荐

