需要一个带双引号的字符串,然后在python 2.6中单引号

时间:2016-06-03 13:46:18

标签: python string python-2.6

我正在尝试在变量A中存储一个字符串,其中包含:

"'D:\\Work\\B1.tif';'D:\\Work\\B2.tif'"

我有两个存储B1.tifB2.tif位置的变量:

X = "D:\\Work\\B1.tif"
Y = "D:\\Work\\B2.tif"

但是,当我尝试将所有字符串组合成一个变量' A':

A = '"' + "'" + X + "'" + ";" + "'" + Y + "'" + '"'

这就是它存储的内容:

'"\'D:\\Work\\B1.tif\';\'D:\\Work\\B2.tif\'"'

当我print A显示时:

"'D:\Work\B1.tif';'D:\Work\B2.tif'"

似乎用双引号(\)和单引号(")分隔的反斜杠(")会自动存储在字符串中。如何在字符串中存储双引号和单引号而不使用反斜杠分隔引号?

4 个答案:

答案 0 :(得分:2)

字符串格式(和原始字符串)更容易:

A = "\"'D:\\Work\\B1.tif';'D:\\Work\\B1.tif'\""
print A

X = r"D:\Work\B1.tif" 
Y = r"D:\Work\B2.tif"

A = '"' + "'" + X + "'" + ";" + "'" + Y + "'" + '"'
print A

A = "\"'%s';'%s'\"" % (X, Y)
print A

给出:

"'D:\Work\B1.tif';'D:\Work\B1.tif'"
"'D:\Work\B1.tif';'D:\Work\B2.tif'"
"'D:\Work\B1.tif';'D:\Work\B2.tif'"

但是,要获得显示的结果,必须使用repr(),这是IDLE在您输入变量名时使用的内容。如果我将所有print语句更改为{{ 1}}我得到了:

print repr(A)

IDLE使用班级'"\'D:\\Work\\B1.tif\';\'D:\\Work\\B1.tif\'"' '"\'D:\\Work\\B1.tif\';\'D:\\Work\\B2.tif\'"' '"\'D:\\Work\\B1.tif\';\'D:\\Work\\B2.tif\'"' 方法,__repr__()使用print。它们通常是相同的,但有时候,就像在这里一样,它们不是。

答案 1 :(得分:2)

打印" \'%s \'; \'%s \'"' %(X,Y)

答案 2 :(得分:1)

当您通过键入Python的名称在Python中显示变量时,Python会尝试以一种方式打印它,如果您要将其复制并粘贴为变量,它将生成相同的对象。这适用于字符串,列表,字典,集等。结果是,当以这种方式打印时,字符串需要被转义。反斜杠实际上并不存储在字符串中。您可以通过计算长度来看到:

>>> a = '"' + "'"
>>> a
'"\''
>>> len(a)
2
>>> print a
"'

但是,有更好的方法来构建您想要的相同字符串,如其他答案所示。

答案 3 :(得分:0)

尝试使用str.format()来处理这些复杂的格式化情况,您甚至可以使用三重引号字符串来简化它。

A = ''' "'{}';'{}'" '''.format(X,Y)