我正在传入字符串并希望以原始格式打印缓冲区(按原样打印双反斜杠) 我怎么告诉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
答案 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 literal:r'\\JIM-PC'
,也可以在常规字符串文字中恰当地表示两个反斜杠:'\\\\JIM-PC'
。