2011-08-22 42 views
1

当字符串逃过我有以下代码:的Python:创建一个元组

string = "ad\23e\4x{\s" 
data = (string,) 

当我打印我的元组字符串必须为每个额外的斜线的数据一共有6个反斜杠凶多吉少。

如何避免多余的反斜杠?

回答

3

对象data是一个元组。当你打印一个元组时,Python为每个元素调用repr。如果您想以另一种方式进行格式化,您必须自己进行转换。

>>> s = "ad\23e\4x{\s" 
>>> d = (s,) 
>>> print d 
('ad\x13e\x04{\\s',) 
>>> print '(%s,)' % (', '.join('"%s"' % _ for _ in d)) 
("adex{\s") 
+0

感谢您的回复。我想要像这样在元组中格式化字符串:'code'“ad \ 23e \ 4x {\ s” 'code' –

0

你的意思是这样的吗?

In [11]: string = r'ad\23e\4x{\s' 

In [12]: string 
Out[12]: 'ad\\23e\\4x{\\s' 

In [13]: print string 
ad\23e\4x{\s 

In [14]: data=(string,) 

In [15]: data 
Out[15]: ('ad\\23e\\4x{\\s',) 

In [16]: print data 
('ad\\23e\\4x{\\s',) 

In [17]: print data[0] 
ad\23e\4x{\s 
1

这些额外的反斜杠实际上不是在你的字符串,它们是Python的有多么代表字符串(的想法是,你可以粘贴回一个程序,它会工作)。这是因为元组的__str__()实现在每个项目上调用repr()。如果你print stringprint data[0]你会在字符串中看到实际上是