我从用户输入的GUI文本框中读取一个字符串,并通过pandoc进行处理。字符串包含数学的乳胶指令,这些指令包含反斜杠字符。我想把这个字符串作为原始字符串发送给pandoc进行处理。但是像“\theta”这样的东西变成了tab和“heta”。
如何将包含反斜杠字符的字符串文字转换为原始字符串。。。?
编辑:
谢谢戴维勒克斯,飞羊和联合国大学。但这些解决方案似乎都帮不了我。原因是,还有其他反斜杠字符在python中没有任何效果,但在latex中有意义。
例如'\lambda'。所有建议的方法产生
\\lambda
在乳胶加工过程中不会经历的——它应该保持为lambda。
另一个编辑:
如果我能完成这项工作,我想我应该结束了。@马克:这三种方法都给出了我不想要的答案。
a='\nu + \lambda + \theta';
b=a.replace(r"\\",r"\\\\");
c='%r' %a;
d=a.encode('string_escape');
print a
u + \lambda + heta
print b
u + \lambda + heta
print c
'\nu + \\lambda + \theta'
print d
\nu + \\lambda + \theta
这表明在
n
、l
和t
之前有一个反斜杠:你的图形用户界面有点古怪。下面是一个通过
Tkinter.Entry
获取一些用户输入的简单示例。注意,检索到的文本在n
、l
和t
之前只有一个反斜杠。因此无需额外处理:如果在输入框中键入
\nu + \lambda + \theta
,控制台将(正确)打印:如果您的GUI没有返回类似的结果(正如您的文章所建议的那样),那么我建议您考虑修复GUI问题,而不是使用
string_escape
和字符串replace
。Python的原始字符串只是告诉Python解释器应该将反斜杠解释为文本斜杠的一种方法。如果您读取用户输入的字符串,则它们已经超过了可能是原始字符串的点。此外,用户输入很可能是按字面意思读入的,即“raw”。
这意味着口译发生在别的地方。但如果你知道它发生了,为什么不逃避反斜杠,无论是什么解释它?
(请注意,您不能将
r"\"
作为“a raw string cannot end in a single backslash”执行,但我也可以将r"\\"
用作第二个参数。)如果这不起作用,你的用户输入是出于某种神秘的原因解释反斜杠,所以你需要一种方法告诉它停止。
如果要将现有字符串转换为原始字符串,则可以如下重新分配
将打印
相关问题 更多 >
编程相关推荐