在Python2.6中,需要一个字符串,后跟双引号和单引号

2024-06-28 18:57:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在变量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\'"'

当I printA显示:

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

似乎一个反斜杠(\)将双引号(")和单引号(")分开,并自动存储在字符串中。如何在字符串中存储双引号和单引号,而不使用反斜杠分隔引号?你知道吗


Tags: 字符串内容b2引号b1worktif斜杠
3条回答

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

字符串格式(和原始字符串)要简单得多:

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__()。通常它们是一样的,但有时,就像这里一样,它们不是。你知道吗

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

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

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

相关问题 更多 >