Python引号取消器算法

时间:2014-04-07 19:51:30

标签: python

i = 1
def textconverter(t,color='black'):
    #Magically change all quotation marks (') to (\')
    cwprint(t,color)
def cwprint(t,color='black'):
    global i
    exec('label%d = Label(cw,text=\''%i+t+'\',fg=color).grid(row='+str(i)+')')
    i += 1
textconverter('test')

我正在构建一个小型聊天程序来试验Tkinter和套接字库,但是我遇到了这个问题:我想使用标签在屏幕上打印一个值(用户发送的文本)。 / p>

一切顺利,直到用户输入包含引号的字符串。例如:“不要这样做'

Python会认为字符串是' Don'并且不会认识到这样做'部分。 有什么方法可以解决这个问题吗?

由于

btw:cwprint代表聊天窗口上的打印

1 个答案:

答案 0 :(得分:1)

好的,我们来到这里是一个卓越的X-Y问题。不要使用exec来创建顺序变量名称。改为使用列表:

i = 1
def cwprint(t,labels,color='black'):
    global i
    text = '{} {}'.format(i, t)
    labels.append (Label(cw,text=text,fg=color).grid(row=i))
    i += 1

labels = []
cwprint ('Hello', labels)
cwprint ('World', labels)

无需exec或字符串转义。