繁体   English   中英

需要立即在Python 2.6中使用双引号和单引号引起来的字符串

[英]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.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'"

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

字符串格式化(和原始字符串)要容易得多:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM