python - python 显示 `\n` 而不是换行
问题描述
我编写了一个函数来创建VALUES
SQL 查询的一部分:
def query_values(data_iterator):
return ',\n'.join('\n({})\n'.format(',\n'.join('"{}"'.format(value) for value in data_row)
) for data_row in data_iterator
),
当我调用这个函数和print
结果时,我得到的是:
query_values:
('\n("801",\n"printer",\n"barcode printer")\n,\n\n("844",\n"laptop",\n"windows")\n,\n\n("997",\n"printer",\n"barcode printer")\n',)
都在一条线上。不是换行,\n
而是显示。
最初我有一个\n
,但后来我插入了多个,只是为了看看它们是否会显示出来。
第二个问题是整个事情都有括号,这是我不想要的。
我对这两个问题感到困惑,我想出了第二个问题的解决方案:
我在函数末尾有一个逗号。逗号导致函数返回一个元组,而不是单个字符串。
我删除了逗号:
def query_values(data_iterator):
return ',\n'.join('\n({})\n'.format(',\n'.join('"{}"'.format(value) for value in data_row)
) for data_row in data_iterator
)
这解决了这两个问题。现在的输出是:
query_values:
("801",
"printer",
"barcode printer")
,
("844",
"laptop",
"windows")
,
("997",
"printer",
"barcode printer")
我把逗号放回去,\n
显示出来了。我删除了逗号,我又多了几行。
我已经删除了 extraneous \n
,所以现在我得到了我想要的:
query_values:
("801","printer","barcode printer"),
("844","laptop","windows"),
("997","printer","barcode printer")
所以,我的代码可以正常工作,但我\n
对旧版本代码中显示的字符完全感到困惑。为什么会这样?
更新:这个问题的几个答案集中在为什么我得到一个元组。那不是我的问题。为什么会/n
显示?
解决方案
这似乎是元组的行为。打印元组时, print 调用__repr()__
每个元素。列表也是如此。
我试过这个:
tup = "xxx\nxx",
lst =["xxx\nxx"]
for t in tup,lst:
print('t :', t)
for s in t:
print('element:',s)
print(' repr:',s.__repr__())
print('---')
输出是:
t : ('xxx\nxx',)
element: xxx
xx
repr: 'xxx\nxx'
---
t : ['xxx\nxx']
element: xxx
xx
repr: 'xxx\nxx'
---
因此,元组和列表的行为相同。
当我们有一个字符串时,调用__repr__()
不会扩展\n
字符,而是在它周围加上引号:
s = "xxx\nxx"
print('s :', s)
print('s.__repr__():', s.__repr__())
输出:
s : xxx
xx
s.__repr__(): 'xxx\nxx'
running.t、interjay和Daniel Roseman在评论中提到了这种元组行为,但在答案中没有提到,这就是我发布这个答案的原因。
推荐阅读
- c# - 如何将我的 Unity android 应用程序连接到 000webhost 数据库?
- java - Selenium 在第二次迭代中的奇怪行为
- html - 我无法为 div 设置背景图像属性
- r - 使用 Shiny 应用程序保存数据时出现问题
- php - 无法在 apache2 httpd 服务器上配置 php。找不到 .so 文件所在的 php 模块
- c++ - Can't compile a programm from git: 串行问题 STM32L476
- macos - 无法使用 AppleScript 在 Mac 上设置桌面背景
- python - Python 和 Selenium - 根据名称和文本选择特定的单选按钮
- angular - Angular 8/9 和虚拟文件夹(IIS 和 localhost)问题
- javascript - 量角器驱动稳定版?