假设我在Python 3.2中有一个字符串,如下所示:
'\n'
Run Code Online (Sandbox Code Playgroud)
当我将它打印到控制台时,显然它显示为一个新行.我想要的是能够打印它作为反斜杠后跟一个n.此外,我需要为所有转义字符执行此操作,例如\ t.所以我正在寻找一个函数unescape(),对于一般情况,它将按如下方式工作:
>>> s = '\n\t'
>>> print(unescape(s))
'\\n\\t'
Run Code Online (Sandbox Code Playgroud)
这可能在Python中没有构建转义字符的字典到它们的字面替换吗?
(如果有人感兴趣,我这样做的原因是因为我需要在命令行上将字符串传递给外部程序.该程序了解所有标准转义序列.)
jfs*_*jfs 12
为了防止\
在文字字符串中进行特殊处理,您可以使用r
前缀:
s = r'\n'
print(s)
# -> \n
Run Code Online (Sandbox Code Playgroud)
如果您有一个包含换行符号(ord(s) == 10
)的字符串,并且您希望将其转换为适合作为Python文字的表单:
s = '\n'
s = s.encode('unicode-escape').decode()
print(s)
# -> \n
Run Code Online (Sandbox Code Playgroud)
编辑:根据您的上一条评论,您可能希望从Unicode获得某些编码表示.这是一种方式:
>>> s = '\n\t'
>>> s.encode('unicode-escape')
b'\\n\\t'
Run Code Online (Sandbox Code Playgroud)
如果您不需要转义它们,请使用您的系统编码,例如:
>>> s.encode('utf8')
b'\n\t'
Run Code Online (Sandbox Code Playgroud)
您可以在子进程中使用它:
import subprocess
proc = subprocess.Popen([ 'myutility', '-i', s.encode('utf8') ],
stdout=subprocess.PIPE, stdin=subprocess.PIPE,
stderr=subprocess.STDOUT)
stdout,stderr = proc.communicate()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9380 次 |
最近记录: |