首页 > 其他分享 >string 模块

string 模块

时间:2022-12-28 11:25:52浏览次数:48  
标签:what string format likes 模块 print jwd substitute

string 模块简单分析

字符串常量

点击查看代码
whitespace = ' \t\n\r\v\f'  # 空白字符
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'  # 全英文小写
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'  # 全英文大些
ascii_letters = ascii_lowercase + ascii_uppercase  # asscii码 字母
digits = '0123456789'  # 十进制数字
hexdigits = digits + 'abcdef' + 'ABCDEF'  # 十六进制
octdigits = '01234567'  # 八进制
punctuation = r"""!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""  # 特殊字符
printable = digits + ascii_letters + punctuation + whitespace  # 可打印的

格式化字符串

点击查看代码
import string


# 千分位显示
print('{:,}'.format(1234567890))  # '1,234,567,890'
# 百分比表示
print('Correct answers: {:.2%}'.format(23 / 16))  # 'Correct answers: 143.75%'
# 指定小数点后几位展示
print('{:.2f}; {:.5f}'.format(3.1415926, -3.1415926))  # '3.14; -3.14159'

# 格式化字符串
print('{0}, {1}, {2}'.format('a', 'b', 'c'))  # a, b, c
print('{}, {}, {}'.format('a', 'b', 'c'))  # a, b, c
print('{2}, {1}, {0}'.format('a', 'b', 'c'))  # c, b, a
print('{2}, {1}, {0}'.format(*'abc'))  # c, b, a     # 解包参数序列
print('{0}{1}{0}'.format('AA', 'BB'))  # AABBAA      # 参数的下标可以重复
print('姓名:{name},年龄 {age}'.format(**{'name': 'jwd', 'age': 18}))  # 姓名:jwd,年龄 18
print('姓名:{name},年龄 {age},姓名:{name}'.format(name='jwd', age=18))  # 姓名:jwd,年龄 18,姓名:jwd
coord = (3, 5)
print('X: {0[0]};  Y: {0[1]}'.format(coord))  # 'X: 3;  Y: 5'
#  格式规范小型语言
print('{:+f}; {:+f}'.format(3.14, -3.14))  # '+3.140000; -3.140000'
print('{: f}; {: f}'.format(3.14, -3.14))  # ' 3.140000; -3.140000'
print('{:-f}; {:-f}'.format(3.14, -3.14))  # '3.140000; -3.140000'
#  格式字符串语法
print("名字是 {0!s}".format('JingWenDong'))  # 相当于使用了 str()
print("名字是 {name!r}".format(name='JingWenDong'))  # 相当于使用了 repr()
print("名字是 {!a}".format('JingWenDong'))  # 相当于使用了 ascii()
#  ‘#’的作用
print("int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42))  # int: 42;  hex: 2a;  oct: 52;  bin: 101010
print("int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42))  # int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010
# 对象类展示
class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y

    def __str__(self):
        return 'Point({self.x}, {self.y})'.format(self=self)
print(Point(3, 5))  # Point(3, 5)
#  不设置宽度表示
print('十进制={0:d},八进制={0:o},十六进制={0:X},二进制={0:b},'.format(12))
#  设置宽度表示
for num in range(5, 12):
    for base in 'dXob':
        print('{0:{width}{base}}'.format(num, base=base, width=1), end=' ')
    print()

模板字符串

点击查看代码
"""
前景提要
1)substitute()  参数可以是 任何map类型的数据,或者关键字参数
2)substitute()  参数出出现重复项,则优先考虑 关键字参数结果 
"""
# 创建模板对象
s = Template('$who likes $what')

# 替换方法 (字符串中没有关键字对象则引发异常)
print(s.substitute({'who': 'jwd', 'what': 'goods'}))  # jwd likes goods

# 重复项 (参数出出现重复项,则优先考虑 关键字参数结果)
print(s.substitute({'who': 'jwd', 'what': 'goods'}, what='coke'))  # jwd likes coke

# 安全替换方法 (字符串中没有关键字对象不引发异常,直接显示未匹配的结果)
print(s.safe_substitute({'who': 'jwd'}))  # jwd likes $what



""" 高级使用 """

# 可以派生 Template 自定义用于分析模板字符串的占位符语法、分隔符或整个正则表达式。为此,可以重写这些类属性:delimiter,idpattern

class NewTemplate(Template):
    delimiter = '@'
    idpattern = r'(?a:[_a-z][_a-z0-9]*)'


# 新对象测试
s = NewTemplate('@who likes @what')
print(s.substitute({'who': 'jwd', 'what': 'goods'}))  # jwd likes goods
print(s.substitute({'who': 'jwd', 'what': 'goods'}, what='coke'))  # jwd likes coke
print(s.safe_substitute({'who': 'jwd'}))  # jwd likes $what

标签:what,string,format,likes,模块,print,jwd,substitute
From: https://www.cnblogs.com/jwdboke/p/17009555.html

相关文章

  • DAG任务调度系统 Taier 演进之道,探究DataSourceX 模块
    熟悉Taier的小伙伴们应该都知道,在11月7日发布的​​Taier1.3新版本​​中,我们融合了「DataSourceX模块」。这是十分重要的一个变化,移除Taier外部插件依赖,新增数据源插件相......
  • python——random模块
    参考:https://www.cnblogs.com/liangmingshen/p/8909376.html 1.random.random() #用于生成一个0到1的随机浮点数:0<=n<1.01importrandom2a=random.rand......
  • DC-DC隔离电源模块与非隔离电源模块有什么区别?
    隔离DC-DC电源模块是指隔离电源是使用变压器将各种不同电压(如:48VDC,24VDC,12VDC等)通过变压器将电压降到所需要的电压,然后作为负载供电使用。非隔离DC-DC电源模块是将各种不同......
  • Python爬虫实战,requests+openpyxl模块,爬取小说数据并保存txt文档(附源码)
    前言今天给大家介绍的是Python爬取小说数据并保存txt文档,在这里给需要的小伙伴们代码,并且给出一点小心得。首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基......
  • Kong是一款基于OpenResty(Nginx + Lua模块)
    Kong是一款基于OpenResty(Nginx+Lua模块)微服务系列之网关(一)kong及管理界面konga的安装部署 1.网关概述微服务架构系统少则十几,多则成百上千个服务组成,除了......
  • Java String类为什么用final修饰
    在Java语言中,使用final修饰符修饰的类是不可以被继承的,也就是说,如果一个类被声明为final,则不能被其他类所继承。因此,当String类被声明为final时,意味着它不能被其他类所继承......
  • json中的json.parseObject()方法和json.tojsonString()方法
    JSON.parseObject,是将Json字符串转化为相应的对象;JSON.toJSONString则是将对象转化为Json字符串。在前后台的传输过程中,Json字符串是相当常用的,这里就不多介绍其功能了,直接......
  • django csrf跨站,CBV添加装饰器,auth认证模块
    djangocsrf跨站,CBV添加装饰器,auth认证模块内容概要csrf跨站请求伪造csrf相关校验策略CBV添加装饰器的多种方式auth认证模块BBS项目需求分析内容详情csrf跨站请求......
  • FreeSWITCH编译加载新模块
    本文更新于2022-05-03,使用FreeSWITCH1.10.7。以下示例,假定源代码目录为/usr/src/freeswitch,安装目录为/usr/local/freeswitch,安装的新模块为mod_say_zh。如模块未编译......
  • Selenium35-模块化设计
    模块化设计模块化用来分隔,组织和打包软件每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要的功能在系统结构中,模块是......