【python语法】 字符串和格式化输出

eval 与 exec

eval 函数只能处理字符串,也可以返回参数中字符串表达式的运算结果

>>> result = eval("9*9*9")
>>> result
729
# eval()的参数只能是字符串,如果强行换成表达式会出现类型错误TypeError
>>> eval(8*8)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: eval() arg 1 must be a string, bytes or code object

eval()的参数只能是字符串,如果强行换成表达式会出现类型错误TypeError

exec函数的参数是一段可执行的代码,exec函数的作用是执行参数中的代码:

>>> import os
>>> exec("os.system('notepad')")
字符串的输出方式

‘’ :单引号用于单个字符;"":双引号内部用于书写字符串;’’’ ‘’’ 三引号内部是写的是可以换行的字符串;

ps:在编码与转码的过程中,函数ord()将参数中的字符(单个字符)转换成对应的ASCII码值;函数chr()将参数中的ASCII码值转化成对应的字符

字符串截取

语法结构:

str[start:end]

截取一个字符串对应的部分

  • start :开始字符的下标(字符串截取包括开始元素)
  • end:结束字符的下标(字符串截取不包括结束元素||取到end下标前的一个元素)
mystr = """生活中程序猿的真实写照、
一款游戏一包烟,一台电脑一下午。
一盒泡面一壶水,一顿能管一整天"""
print(mystr[:])   # 截取整个字符串
print(mystr[3:11])   # 从下标为 3 的元素截取到下标为 11 的元素(不包括最后一个元素)
print(mystr[:-1])  # 从开始第一个元素截取到最后一个元素(不包括)
print(mystr[2:])  # 从下标为2的元素截取到最后一个元素(包括)

:前后不写对应的下标,意味着从第一个元素开始,或者截取到最后一个元素(包含);字符串正向(从左往右)的下标编号是从 0 开始的,分别是:0,1,2,3 …第一个元素的编号是:0;字符串逆向(从右往左)的下标编号是从-1开始的,分别是:-1,-2,-3…第一个元素的编号是:-1

字符串赋值

将变量赋值成为字符串,是将对应的变量名指向一块存储字符串的地址,字符串钟大哥字符可以作为元素输出,但是字符串的内容不能改变(不能直接修改内存地址中的内容)

>>> mystr = "我爱你中国"
>>> print(mystr[2])
你
>>> mystr[2] = "4"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

不能修改字符串的额内容(想修改内容可以重新赋值一个字符串)

字符串中的转义字符

在字符串中通常使用转义字符\标识特殊含义;比如显示双引号,标识文件路径等,转义字符与不同的字母组合在字符串中也有不同的意义,比如\n意味着换行符

print("\"calc\"")  # 区别字符串内的双引号和标识字符串的双引号
print("G:\\新建文件夹\\python\\第一阶段视频\\001现阶段要看的材料")  # 输入文件路径的方式;遇到 \ 需要进行转义
print("ABCD\nEFG")  # \n换行
字符串对齐

format函数为对应输出的字符串预留空位

format("str","xxs")
  • str:将要格式化输出的字符串
  • xxs:给对应的字符串预留xx个字符大小的空位

使用format()函数输出的字符串默认的对齐方式是左对齐

print(format("12","10s"),"123456")
print(format("12sax","10s"),"akncjk")
print(format("12wdq","10s"),"1516515")
print(format("12ascac","10s"),65151)
print(format("1dwqd2","10s"),2161)
----------------------------------------------------------------
(默认的对齐方式是左对齐)
12         123456
12sax      akncjk
12wdq      1516515
12ascac    65151
1dwqd2     2161
字符串格式化

字符串格式化有以下几个常用符号:

  • %s : 字符串占位符,格式化字符串,再输出语句中占位输出对应的字符串
  • %d:整数占位符,格式化整数,在输出语句中占位输出对应的整数
  • %f:浮点数占位符,格式化浮点数,再输出语句中占位输出对应的浮点数
  • %c:格式化单个字符或者ASCII
  • %e: 格式化数字,占位输出对应数字用科学计数法表示的数据
num = 20
money = 4000
print("ZS的女神有%d个备胎,\n有一天ZS花了%f元人民币给女神买了一部手机,\n女神说,你是个好人但咱俩不合适;\n其中一个备胎花了%f 元人民币租了辆奔驰,\n给女神买了一束花,\n女神就陪他睡了" % (num, money, money))
cup = 'c'
money = 15364.2234
print("ZS的女神有%c罩杯,是她花了%.2f元人民币隆的"%(cup,money))  # %.nf 代表格式化浮点数并保留n位小数
print("ZS的女神有%c罩杯,是她花了%e元人民币隆的"%(cup,money))  # %.e 代表格式化科学计数法 * 10的指数次方
print("ZS的女神有%c罩杯,是她花了%.2e元人民币隆的"%(cup,money))  # %.ne 代表格式化科学计数法 * 10的指数次方 结果保留n位小数

其中:%.nf||%.ne表示保留n位小数

浮点数填充类型:

  • %f : 在对应位置上填充浮点数
  • %nf :在对应位置上个填充浮点数,默认数据的输出宽度为 n 个字符位(默认右对齐)
  • %n.af : 在对应的位置上填充浮点数,默认数据的输出宽度为 n 个字符位,保留 a 位小数
  • %-nf ; 在对应位置上个填充浮点数,默认数据的输出宽度为 n 个字符位(将对齐方式修改为左对齐)
  • %0n.af 在位置前面填充 0 取代用来占位的空格(对应的填充符号可以任意)
print("%-10.2f %f"%(123.56,11562.23546))  # 10个字符位置,保留两位小数,左对齐
print("%10.2f %f"%(123.568915,11562.23546))# 10个字符位置,保留两位小数,默认右对齐
print("%010.2f %f"%(123.5685611,11562.23546))# 10个字符位置,保留两位小数,右对齐,用 0 代替空格对字符位进行占位填充
print("%10.2f %f"%(123.5689,11562.23546))

有格式化占位符 % 出现的时候 %% 算是一种特殊的转义字符,在字符串中输出一个%

print("hello      %%    %.2f%%"%(10.5))  # 输出 hello % 10.50%
print("hello      %%    %d%%"%(10))   # 输出 hello % 10%

在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。

在Python3中,所有的字符串都是Unicode字符串。(所以就不用在前面加上u了)

python3 中表明纯文本的方法

在对应的字符串之前加上字母 r 表示纯文本 r的功能是处理转义字符\ 在开发中常用于输入文件路径,但是r不能处理双引号(需要输出双引号还是要使用转义字符的)

print(r"G:\新建文件夹\python")
print("G:\\新建文件夹\\python")  
# 输出的结果都是文件路径;G:\新建文件夹\python
print("ss\"11223\"ss")   # 处理双引号的时候需要使用转义字符
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值