Vij*_*thy 39 python string text
我从用户输入的GUI文本框中读取一个字符串,并通过pandoc处理它.该字符串包含带有反斜杠字符的math的latex指令.我想将字符串作为原始字符串发送到pandoc进行处理.但是像"\ theta"这样的东西变成了一个标签和"heta".
如何将包含反斜杠字符的字符串文字转换为原始字符串...?
编辑:
谢谢develerx,飞羊和unutbu.但是这些解决方案似乎都没有帮助我.原因是还有其他的backslashed-characters在python中没有任何影响但在latex中有意义.
例如'\ lambda'.建议生产所有方法
\\lambda
Run Code Online (Sandbox Code Playgroud)
在乳胶加工中没有经过 - 它应该保持为\ lambda.
另一个编辑:
如果我能得到这项工作,我想我应该通过.@Mark:这三种方法都给出了我不想要的答案.
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
Run Code Online (Sandbox Code Playgroud)
fly*_*eep 41
Python的原始字符串只是一种告诉Python解释器它应该将反斜杠解释为文字斜杠的方法.如果您阅读了用户输入的字符串,那么它们已经超出了原始状态.此外,用户输入最有可能按字面读取,即"原始".
这意味着口译发生在其他地方.但是,如果你知道它发生了,为什么不逃避反斜杠的任何解释呢?
s = s.replace("\\", "\\\\")
Run Code Online (Sandbox Code Playgroud)
(请注意,你不能做r"\"的"原始字符串不能在单个反斜线结束",但我可以使用r"\\"以及作为第二个参数.)
如果这不起作用,您的用户输入是出于解释反斜杠的一些神秘原因,因此您需要一种方法来告诉它停止它.
小智 15
如果要将现有字符串转换为原始字符串,那么我们可以像下面那样重新分配
s1 = "welcome\tto\tPython"
raw_s1 = "%r"%s1
print(raw_s1)
Run Code Online (Sandbox Code Playgroud)
会打印
welcome\tto\tPython
Run Code Online (Sandbox Code Playgroud)
a='\nu + \lambda + \theta'
d=a.encode('string_escape').replace('\\\\','\\')
print(d)
# \nu + \lambda + \theta
Run Code Online (Sandbox Code Playgroud)
这表明,有之前的一个反斜杠n,l并且t:
print(list(d))
# ['\\', 'n', 'u', ' ', '+', ' ', '\\', 'l', 'a', 'm', 'b', 'd', 'a', ' ', '+', ' ', '\\', 't', 'h', 'e', 't', 'a']
Run Code Online (Sandbox Code Playgroud)
GUI发生了一些时髦的事情。这是一个通过抓取一些用户输入的简单示例Tkinter.Entry。注意,文本唯一检索面前的一个反斜杠n,l和t。因此,不需要额外的处理:
import Tkinter as tk
def callback():
print(list(text.get()))
root = tk.Tk()
root.config()
b = tk.Button(root, text="get", width=10, command=callback)
text=tk.StringVar()
entry = tk.Entry(root,textvariable=text)
b.pack(padx=5, pady=5)
entry.pack(padx=5, pady=5)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
如果您\nu + \lambda + \theta在输入框中键入,控制台将(正确)打印:
['\\', 'n', 'u', ' ', '+', ' ', '\\', 'l', 'a', 'm', 'b', 'd', 'a', ' ', '+', ' ', '\\', 't', 'h', 'e', 't', 'a']
Run Code Online (Sandbox Code Playgroud)
如果您的GUI没有返回类似的结果(如您的帖子似乎暗示的那样),那么我建议您着手解决GUI问题,而不是与string_escapeand string 混为一谈replace。
| 归档时间: |
|
| 查看次数: |
98652 次 |
| 最近记录: |