在Python 2.7中使用反斜杠打印字符串

时间:2017-02-17 15:00:19

标签: python string python-2.7 escaping

我正在传入字符串并希望以原始格式打印缓冲区(按原样打印双反斜杠) 我怎么告诉string.format()这是一个'原始'字符串而不使用反斜杠字符?

>>> machines=['\\JIM-PC', '\\SUE-PC', '\\ANN-PC']
>>> for machine in machines:
...     print 'Machine Found %s' % (machine)
...
Machine Found \JIM-PC
Machine Found \SUE-PC
Machine Found \ANN-PC

2 个答案:

答案 0 :(得分:2)

最简单的方法就是减少你的斜线,因为" \\"被认为是一个斜杠字符。

machines=['\\\\JIM-PC','\\\\SUE-PC','\\\\ANN-PC']
for machine in machines:
    print 'Machine Found %s' % (machine)

你也可以使用方法str.encode(' string-escape'):

machines=['\\JIM-PC','\\SUE-PC','\\ANN-PC']
for machine in machines:
    print 'Machine Found %s' % (machine.encode('string-escape'))

或者,您也可以指定值,如果您希望编码粘在变量上供以后使用。

machines=['\\JIM-PC','\\SUE-PC','\\ANN-PC']
for machine in machines:
    machine = machine.encode('string-escape')
    print 'Machine Found %s' % (machine)

我在这里找到了str.encode(' string-escape')方法:casting raw strings python

希望这有帮助。

编辑

Re Chris:print(repr(machine))也可以,只要你不介意它包含引号。

答案 1 :(得分:0)

字符串文字'\\JIM-PC' 不包含双反斜杠;你看到的是常规字符串文字中单个反斜杠的表示

通过查看字符串的长度或迭代其各个字符可以很容易地显示:

>>> machine = '\\JIM-PC'
>>> len(machine)
7
>>> [c for c in machine]
['\\', 'J', 'I', 'M', '-', 'P', 'C']

要创建包含双反斜杠的字符串,您可以使用raw string literalr'\\JIM-PC',也可以在常规字符串文字中恰当地表示两个反斜杠:'\\\\JIM-PC'