`
android_madness
  • 浏览: 41056 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

python format string (转)

阅读更多
字符串的格式化


在python中也有类似于c中的printf()的格式输出标记。在python中格式化输出字符串使用的是%运算符,通用的形式为


格式标记字符串 % 要输出的值组
其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。重点来看左边的部分。左边部分的最简单形式为:

%cdoe
其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求完全可以全部使用’%s‘来标记。比如:

'%s %s %s' % (1, 2.3, ['one', 'two', 'three'])
它的输出为'1 2.3 ['one', 'two', 'three']',就是按照%左边的标记输出的。虽然第一个和第二值不是string类型,一样没有问题。在这个过程中,当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。前面说过还有一个repr()函数,如果要用这个函数,可以用%r来标记。除了%s外,还有很多类似的code:

整型数:%d
无符号整型数:%u
八进制:%o
十六进制:%x   %X
浮点数:%f
科学记数法: %e   %E
根据数值的不同自动选择%e或%f: %g
根据数值的不同自动选择%E或%f: %G
就跟前面说用\进行转义一样,这里用%作为格式标记的标识,也有一个%本身应该如何输出的问题。如果要在”格式标记字符串“中输出%本身,可以用%%来表示。
上面说的只是格式标记的最简间的形式,来看复杂一点的:

‘%6.2f’ % 1.235
在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。还有更复杂的:

‘%06.2f’ % 1.235
在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。这一行的输出为‘001.24’,可以看到小数也占用一位。类似于这里0这样的标记还有-、+。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。最后来看最复杂的形式:

‘%(name)s:%(score)06.1f’ %{'score':9.5, 'name':'newsim'}
这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键。前面的例子可以看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是一一对应的,有顺序,一对一,二对二。而在这种形式中,则不是,每个格式标记对应哪个值由小括号中的键来指定。这行代码的输出为:'newsim:0009.5'。

有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f。可以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:'%*.*f' % (6, 2, 2.345)就相当于'%6.2f' % 2.345。

这是这本书到此为止看起来最复杂的内容。不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个"+"来构造类似的输出字符串。这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。


象C 中的sprintf函数一样,可以用“%”来格式化字符串。

Table 3.1. 字符串格式化代码

格式 描述
%% 百分号标记
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中
分享到:
评论

相关推荐

    python格式化输出:fstring格式化输出.docx

    从早期的`%s`格式化到`str.format()`方法,再到Python 3.6中引入的f-string(格式化字符串字面量),Python中的字符串格式化技术一直在进化,变得更加直观且高效。 #### 1. f-string简介 f-string是一种在Python ...

    Python库 | format-blocks-0.1.2.tar.gz

    例如,传统的`%`操作符,`str.format()`方法,以及现代的f-string(formatted string literals)。如果`format-blocks`库是关于字符串格式化的,那么它可能提供了更高级的功能,如自定义格式规则、代码高亮、缩进...

    python中时间转换datetime和pd.to_datetime详析

    `pd.to_datetime(date_string, format=format)` 同样,`pd.to_datetime` 可以解析字符串,特别是当数据集中的时间数据是字符串形式时。它也接受`format` 参数来指定字符串的日期格式。例如: ```python date_series ...

    Python-解析字符串使用基于Pythonformat语法的规范

    Python 3.6引入了f-string(格式化字符串字面量),这是一种更简洁的字符串格式化方式。例如: ```python name = "Alice" age = 25 print(f"My name is {name} and I am {age} years old.") ``` 输出:`My ...

    实现protobuf和json互相转换python3源码

    在Python中,protobuf提供了`protoc`编译器来生成消息类型的Python代码。你需要编写一个.proto文件,定义你想要序列化的数据结构。例如,创建一个名为`example.proto`的文件: ```proto syntax = "proto3"; ...

    Python-IMGKit将HTML转换成图像Python库

    'format': 'jpg', 'quality': '100' } imgkit = Imgkit.from_string(html_content, options=options) image_path = imgkit.save('output.jpg') ``` 这段代码会将HTML字符串转换为名为"output.jpg"的JPEG图像,并...

    十六进制转string

    return ''.join(format(ord(char), '02x') for char in string) text = "Hello" print(ascii_to_hex(text)) # 输出: 48656c6c6f ``` 总结来说,Python提供了多种方式将十六进制转换为字符串或ASCII,以及将字符串...

    formatstring:一个C ++ 14类型的安全格式字符串库,深受Python的str.format()函数启发

    # include < formatstring> using namespace formatstring ; int main () { // create a temp. formatting object that gets written to cout std::cout << format ( " hex: {:#x}, centerd: {:_^20}, ...

    python格式化字符串--format.pdf

    本文介绍了Python中几种常用的字符串格式化方法:`%`操作符、`.format()`方法以及f-string。每种方法都有其适用场景,选择哪种方法取决于具体的需求和个人偏好。对于新项目或升级后的项目,建议使用`.format()`方法...

    前端项目-string-format.zip

    这个名为“前端项目-string-format.zip”的压缩包文件提供了一个增强JavaScript字符串处理能力的解决方案,它借鉴了Python语言中的`str.format()`方法。让我们详细探讨一下这个项目的核心概念、实现方式以及其在实际...

    Python实现string字符串连接的方法总结【8种方式】

    本文将详细介绍8种不同的方法来实现Python中的string字符串连接。 1. **加号 (+) 连接** 最基础的字符串连接方式是使用加号 (+)。例如: ```python str1 = "one" str2 = "two" result = str1 + str2 print...

    Python string类的常用方法.docx

    ### Python `string` 类的常用方法详解 #### 一、`upper()` 和 `lower()` - **作用**:这两个方法用于将字符串中的所有字符转换为大写或小写。 - **示例**: ```python s = "Hello, World!" print(s.upper()) #...

    Python库 | fstring-1.2.tar.gz

    与传统的字符串格式化方法如%s、%()s或str.format()相比,f-string提供了更高效的语法。因此,fstring库可能利用了这一特性,提供了一些增强的字符串操作功能,比如模板化、国际化、日志记录或者更复杂的字符串格式...

    python中string模块属性以函数应用-供大家学习研究参考

    def format_field(self, value, format_spec): return format(value, format_spec) def convert_field(self, value, conversion): # do any conversion on the resulting object if ...

    double to string

    例如,Java中的`DecimalFormat`,C++中的`std::setprecision`,Python的`format`函数等。 - **科学记数法**:对于较大或较小的数值,可能会自动转换为科学记数法。如果需要避免,可以设定特定的格式或调整精度。 - *...

    Python中模块string.py详解

    Python中的`string.py`模块是Python标准库的一部分,它包含了各种字符串常量和有用的字符串处理功能。这个模块提供了预定义的字符串集,如ASCII字母、数字、标点符号等,以及`Template`类,用于安全地进行字符串插值...

    Python任意字符串转16, 32, 64进制的方法

    Python字符串转数字 import binascii s = 'test123456test' str_16 = binascii.b2a_hex(s.encode('utf-8')) # 字符串转16进制 print(str_16) def baseN(num, b): return ((num == 0) and 0) or \ (baseN(num...

    基于python格式转换和片选数据

    在Python编程语言中,进行数据格式转换和片选是数据处理和分析的常见任务。这里我们探讨的主题是如何利用Python高效地实现这些操作。标题“基于python格式转换和片选数据”指的是利用Python来处理字符串编码格式(如...

    Python中str.format()详解

    在Python编程中,`str.format()`函数是一种强大的字符串格式化工具,它提供了灵活且易于理解的方式来构造复杂的字符串。本文将深入探讨`str.format()`的基本语法和高级用法,以及如何利用它来提升代码的可读性和维护...

    Python-Python到python编译器允许您在旧版本中使用Python36功能

    5. **其他改进**:还包括更快的集合运算、新的`@dataclass`装饰器、改进的`__format__`方法等。 使用“Python到Python编译器”,我们可以确保这些特性在旧版本Python中也能正常工作。文件名称列表中的“nvbn-py-...

Global site tag (gtag.js) - Google Analytics