如何获取此“ hello = '23'”来代替此“ hello = \'23 \'”

时间:2018-12-05 06:17:46

标签: python string comments clipboard core

我正在尝试执行此代码

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()

当我打印时,用这个\'\'

打印数字

如何避免这种情况

1 个答案:

答案 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)

覆盖元组可能不是一个好主意,但它适用于本演示。