python显示 `\n`而不是换行

标签 python string tuples newline repr

我编写了一个函数来创建 SQL 查询的 VALUES 部分:

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 就显示出来了。我去掉了逗号,又多了几行。

我已经删除了无关的\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 在评论中提到了这种元组行为。 , interjayDaniel Roseman ,但不在答案中,这就是我发布此答案的原因。

关于python显示 `\n`而不是换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55243089/

相关文章:

python - Minidom:如何检查我是否有预期的根和 child ?

string - Windows curl 字符串格式化

非类型参数的 C++ 可变参数模板偏特化

python - 如何将二维数组转换为 python 3 中的元组?

java - 传递参数 - 使用 Javascript 将 Python 转换为 HTML

c++ - python zlib 输出到 C++ 字符串

string - Go中字符串变量的连接速度

c - 从 C 中的字符串数组打印 'triangle' 个字符

scala - 为什么 Scala 中的单元素元组没有 Tuple1 文字?

python - 如何将内部字典键/值提取到 Python 中的新字典中?