我正在尝试在变量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'"
似乎用双引号(\
)和单引号("
)分隔的反斜杠("
)会自动存储在字符串中。如何在字符串中存储双引号和单引号而不使用反斜杠分隔引号?
答案 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)