[英]Need a string with double quote immediately followed by single quote in python 2.6
我正在尝试在变量A
存储一个字符串,其中包含:
"'D:\\Work\\B1.tif';'D:\\Work\\B2.tif'"
我有两个变量存储B1.tif
和B2.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'"
似乎将双引号( "
)和单引号( "
)分开的反斜杠( \\
)自动存储在字符串中。 如何在字符串中存储双引号和单引号而不用反斜杠分隔引号?
字符串格式化(和原始字符串)要容易得多:
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
语句更改为print repr(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\'"'
IDLE使用类的__repr__()
方法, print
使用__str__()
。 通常,它们是相同的,但有时与此处不同。
打印'“ \\'%s \\'; \\'%s \\'”'%(X,Y)
当您仅通过键入变量的名称在Python中显示变量时,Python会尝试以某种方式打印该变量,如果您将其复制并粘贴为变量,则会产生相同的对象。 这适用于字符串,列表,字典,集合等。结果是,以这种方式打印时需要转义字符串。 齿隙实际上没有存储在字符串中。 您可以通过计算长度来看到:
>>> a = '"' + "'"
>>> a
'"\''
>>> len(a)
2
>>> print a
"'
但是,有更好的方法来构建所需的相同字符串,如其他答案所示。
对于这些复杂的格式化情况,请尝试使用str.format()
,甚至可以使用三引号引起来的字符串来str.format()
此操作。
A = ''' "'{}';'{}'" '''.format(X,Y)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.