换行符或“\ n”不起作用。

时间:2014-01-11 20:57:05

标签: python line-breaks

你能告诉我为什么断线\ n不起作用吗?

itemsToWriteToFile = "Number 1:", 12, "\nNumber 2: ", 13, "\nNumber 3: ", 13, "\nNumber 4: ", 14
itemsToWriteToFile = str(itemsToWriteToFile)

itemsToWriteToFile = itemsToWriteToFile.replace('(', "")
itemsToWriteToFile = itemsToWriteToFile.replace(')', "")
itemsToWriteToFile = itemsToWriteToFile.replace('"', "")
itemsToWriteToFile = itemsToWriteToFile.replace(',', "")
itemsToWriteToFile = itemsToWriteToFile.replace('\n', "")

print(itemsToWriteToFile)

5 个答案:

答案 0 :(得分:3)

str()转换正在将“\ n”转换为“\\ n”。

>>> str('\n')
'\n'
>>> str(['\n'])
"['\\n']"

那里发生了什么?当您在列表上调用str()(对于元组相同)时,将调用列表的__str__()方法,该方法又会在其每个元素上调用__repr__()。让我们检查一下它的行为:

>>> "\n".__str__()
'\n'
>>> "\n".__repr__()
"'\\n'"

所以你有原因。

关于如何修复它,就像Blender提出的那样,最好的选择是不在列表中使用str()

''.join(str(x) for x in itemsToWriteToFile)

答案 1 :(得分:2)

所有其他答案都在解决甚至不存在的问题。将您的字符串和整数元组转换为字符串列表。然后,使用str.join()将它们连接成一个大字符串:

foo = "Number 1:", 12, "\nNumber 2: ", 13, "\nNumber 3: ", 13, "\nNumber 4: ", 14
bar = map(str, foo)

print(''.join(bar))

答案 2 :(得分:1)

使用此

itemsToWriteToFile = itemsToWriteToFile.translate(None, "(),\"\\n")

答案 3 :(得分:0)

使用itemsToWriteToFile.replace('\\n', "")代替itemsToWriteToFile.replace('\n', "")

>>itemsToWriteToFile = itemsToWriteToFile.replace('\\n', "")

Final Output:-

>>> print(itemsToWriteToFile)
'Number 1:' 12 'Number 2: ' 13 'Number 3: ' 13 'Number 4: ' 14

答案 4 :(得分:0)

我也遇到了这个问题,我通过进行以下更改来解决了这个问题:

  1. 将我的Charfield更改为模型中的TextField
  2. 将模型添加到管理面板,以便在编辑字段时可以手动在值中按[Enter]而不是使用'\ n'

然后使用{{value | linebreaks}}终于可以了。由于上面Sigfried的回答,猜测字符串中的\ n无效。