我正在尝试执行此代码
vi = "--get"
x = "hello='"
cm = "'"
c = '='
v = '"'
w = "Hello, world"
num = raw_input()
hi = (vi+c+v+x+num+cm+v)
print (hi,w)
import pygtk
pygtk.require('2.0')
import gtk
clipboard = gtk.clipboard_get()
clipboard.set_text(str(vi+c+v+x+num+cm+v))
clipboard.store()
当我打印时,用这个\'\'
打印数字如何避免这种情况
答案 0 :(得分:0)
这是因为为了表示元组,(hi,w)
python需要转义内部的单引号。那是因为python选择用单引号括住hi,因为它在hi
中找到的第一个引号是双引号。
您不必担心,因为:
vi = "--get"
x = "hello='"
cm = "'"
c = '='
v = '"'
w = "Hello, world"
num = "23"
hi = (vi+c+v+x+num+cm+v)
print (hi,w)
print (hi,w)[0]
给您
('--get="hello=\'23\'"', 'Hello, world')
--get="hello='23'"
('--get="hello=\'23\'"', 'Hello, world')
是python将元组表示为字符串的方式。这并不意味着元组的第一个元素作为其中的转义序列。 print (hi,w)[0]
给您您所期望的--get="hello='23'"
print '({},{})'.format(hi,w)
给您
(--get="hello='23'",Hello, world)
请参见以下工作示例:https://paiza.io/projects/olg0_zf7G3SRsbXcGjSjXQ
要点
(hi,w)
是类tuple
的实例。 print (hi,w)
给您('--get="hello=\'23\'"', 'Hello, world')
的原因是tuple.__str__()
就是这样做的。
为说明这一点,让子类元组并重写__str__()
以提供所需的输出。
class MyTuple(tuple):
def __str__(self):
return '({},{})'.format(*self)
foo = MyTuple((hi,w))
print foo
输出:
(--get="hello='23'",Hello, world)
覆盖元组可能不是一个好主意,但它适用于本演示。