【问题标题】:Need a string with double quote immediately followed by single quote in python 2.6在python 2.6中需要一个带双引号的字符串,后跟单引号
【发布时间】:2016-10-03 14:55:23
【问题描述】:

我正在尝试在变量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'"

似乎反斜杠 (\) 将分隔双引号 (") 和单引号 (") 自动存储在字符串中。如何在没有反斜杠分隔引号的情况下将双引号和单引号存储在字符串中?

【问题讨论】:

  • 请不要张贴图片链接,文字不能轻易复制到测试代码中。
  • 使用字符串格式而不是串联
  • 打印 '"\'%s\';\'%s\'"' %(X,Y)

标签: python string python-2.6


【解决方案1】:

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

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

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

【讨论】:

    【解决方案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 语句更改为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__()。通常它们是相同的,但有时,就像这里一样,它们不是。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多