我正在为python / pandas做学校作业,想尝试一下f字符串,因为这似乎是非常方便的格式化方式。
阅读文档后,我意识到我无法使用\ n格式化输出。对于此代码:
f"Shape of dataset:\n {df.shape} (rows, columns)\n"
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
f"Shape of dataset:\n {df.shape} (rows, columns)\n"
Run Code Online (Sandbox Code Playgroud)
阅读文档后,这正是我所期望的。
但是,当我用包围时print(),如下所示:
print(f"Shape of dataset:\n {df.shape} (rows, columns)\n")
Run Code Online (Sandbox Code Playgroud)
我以我想要的方式找到它:
Out[38]: 'Shape of dataset:\n (270792, 11) (rows, columns)\n'
Run Code Online (Sandbox Code Playgroud)
我知道我也可以使用常规格式,但是我很好奇为什么这样做。是因为f字符串组件被忽略了print吗?
这不是特定于f字符串的。这是我手机上的QPython REPL的结果:
>> "\nhello\n"
'\nhello\n'
Run Code Online (Sandbox Code Playgroud)
如果在REPL中输入字符串,转义字符(如“ \ n”)将保持原样。仅在明确列出时才“表达”它们print。即使REPL中的P代表“打印”,REPL显然仍使用其他机制进行打印,或者在打印之前手动为您转义了字符以保留它们。
这在检查字符串时非常有用,因为在打印输出中可能很难发现诸如换行符和制表符之类的“不可见”字符。
以下是一些示例,说明当您将字符串输入 Python/IPython Repl 时,会显示字符串的 repr 形式。您使用哪种字符串格式化程序(f-strings 或.format())并不重要。但是,当您使用print它时,它会被格式化并转义换行符、制表符等字符。
In [18]: f"a\nb\n"
Out[18]: 'a\nb\n'
In [19]: print(f"a\nb\n")
a
b
In [20]: f"a\tb\tc"
Out[20]: 'a\tb\tc'
In [21]: print(f"a\tb\tc")
a b c
In [22]: a = 1
In [23]: b=2
In [24]: "a={}\nb={}".format(a,b)
Out[24]: 'a=1\nb=2'
In [25]: print("a={}\nb={}".format(a,b))
a=1
b=2
In [26]: "a={}\tb={}".format(a,b)
Out[26]: 'a=1\tb=2'
In [27]: print("a={}\tb={}".format(a,b))
a=1 b=2
Run Code Online (Sandbox Code Playgroud)
Python 提供了一个repr()函数来显示对象的可打印表示。所有没有print上述内容的语句都在 Python/IPython 控制台内部使用它。还有用于格式化对象的str()函数。在内部,当您打印字符串时,首先应用 str() 来格式化字符串。
In [29]: print(repr(f"a\tb\tc"))
'a\tb\tc'
In [30]: print(str(f"a\tb\tc"))
a b c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |