首页 > 解决方案 > 如何用这个“hello='23'”代替这个“hello=\'23\'”

问题描述

我正在尝试执行此代码

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

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

我怎样才能避免这种情况

标签: pythonstringcommentsclipboardcore

解决方案


这是因为为了表示元组,(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)

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


推荐阅读