Python3.6下字符串的操作总结

本文介绍Python中字符串的各种操作方法,包括拼接、格式化、查询、修改等实用技巧,适用于初学者及日常开发需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tips:

         这些方法对字符串本身不产生变化
         类似 print('回忆', '*' * 100) 的语句为功能分割线


print('回忆', '*' * 100)

# 直接拼接字符串
a = 'good' + ' man'
print(a)

# 字符串重复
a = 'good' * 3
print(a)

# 格式化输出
a = '今天是%d' % 8
print(a)

# 按顺序依次赋值
a, b, c, d = 'love'
print(a, b, c, d)


print('零散的功能', '*' * 100)

# eval里面的字符串直接看成是一个数学操作,然后将操作的结果赋值给a
a = eval('5 + 4')
print(a)

# Unicode值求最大值
a = max('abcdsefg')
print(a)

# 求字符串长度
a = len('hate')
print(a)

# 以参数为分割条件,将字符串分割成 N 个字串,默认参数是空格
a = '20:34:56'.split(':')
print(a)

# 以回车换行为条件分割,参数用来设置是否保留换行符
a = 'good man\nbad man'.splitlines(True)
print(a)

# ' hate '为连接,将列表中所有的字符串拼接
a = ' hate '.join(['She', 'it'])
print(a)

# 原样(格式)保留字符串
a = """love
        hate
        ahh
    """
print(a, type(a))


print('切片', '*' * 100)

s = 'Holiday is coming!'

# 根据索引访问对应字符,索引从0开始,
# 如果索引写的是负数,则从右往左开始查询,最右边的索引是 -1
a = s[0]  # 第一个字符
b = s[-1]  # 最后一个字符
print(a)
print(b)

# 取出指定子串(范围截取)
# 默认步长为 1,如果步长为正,从左往右查询,如果步长为负,则从右往左查询
a = s[4 : 7]
print(a)

# 步长为2
b = s[0 : 19 : 2]
print(b)


print('', '*' * 100)

s = 'good'

# 'good'tian'cho为中心向两边填充指定字符
# Tips:
#       第一个参数width必须大于等于原始字符串的长度才有效果
a = s.center(5, '*')
print(a)

# 在原始字符串的右侧填充新字符
a = s.ljust(6, '+')
print(a)

# 在原始字符串的左侧填充新字符
a = s.rjust(7, '-')
print(a)

# 在原始字符串的左侧填充 0 ,填充的0的个数 = 参数 - 字符串长度
a = s.zfill(6)
print(a)


print('', '*' * 100)

s = '****dog****'

# 在原始字符串的前后,删除指定子串
a = s.strip('*g')
print(a)

# 从原始字符串的左侧开始删除
a = s.lstrip('*d')
print(a)

# 从原始字符串的右侧开始删除
a = s.rstrip('g*')
print(a)


print('修改', '*' * 100)

s = 'it Is vEry good'

# 将字符串全部转为大写
print(s.upper())

# 将字符串全部转为小写
print(s.lower())


# 如果字符串的首字符是字母,
# 将字符串的首字符转为大写,
# 首字符后面的全部转为小写
print(s.capitalize())

# 将每个单词的首字母转为大写
# (以所有非字母的字符为单词的界定符)
print(s.title())

# 将原始字符串的单词大小写互换
print(s.swapcase())

# 创建一个转换规则
temp = str.maketrans('ab', '12')
a = 'qwaber'
print(a.translate(temp))


print('查询', '*' * 100)

s = 'it Is Is vEry good'

# 查询某个字串('Is')在原始字符串中出现了几次
# 默认查询整个字符串
print(s.count('Is'))

# 从原始字符串的第11位开始查找
print(s.count('Is', 10))

# 从原始字符串的第1位开始、到第6位结束,进行查找
print(s.count('Is', 0, 5))

# 查找字串第一次出现的位置(默认索引从0开始)
# 找不到返回 -1
print(s.find('Is'))

# 查找字串从索引4开始,第一次出现的位置(索引)
print(s.find('Is', 4))

# 查找字串从索引4开始到索引3结束,第一次出现的位置(索引)
print(s.find('Is', 0, 3))

# find效果类似
# 区别在于,如果找不到,则会报错
print(s.index('Is', 1))

# find类似,只不过是从右往左查询,也可指定范围
print(s.rfind('Is', 0, 10))

# index类似,只不过是从右往左查询,也可指定范围
print(s.rindex('Is', 0, 10))

# 在原始字符串中,用第二个字串替换第一个字串,可以指定替换次数
print(s.replace('Is', 'new', 1))

print('判断,编码', '*' * 100)

s = 'dog cat pig make'

# 判断 s 是不是属于Unicode中的字母(包括汉字)
print(s.isalpha())

# 判断字符串是不是数字(包括中文的简、繁体、罗马数字)
print('123'.isnumeric())

# isalpha()isnumeric()的结合
print('good12'.isalnum())

# 字符串中至少有一个字母,并且所有字母都必须是大写形式
print('gooD'.isupper())

# 字符串中至少有一个字母,并且所有字母都必须是小写形式
print('gooD'.islower())

# 至少有一个字母
# 所有的单词都是首字母大写,其余小写
print('123Sdwdw12Qwq'.istitle())

# 判断是不是数字
print('123'.isdigit())
print('123'.isdecimal())

# 判断是否以子串开头,可以限定范围
print('good'.startswith('o'))

# 判断是否以子串结束,可以限定范围
print('good'.endswith('od'))

# 转码
print('好不好good'.encode('utf-8'))

# 解码
print('好不好good'.encode('utf-8').decode('utf-8'))

# 转换成'a'对应的Unicode码值
print(ord('a'))

# 转换成97对应的Unicode码值
print(chr(97))

<think>好的,我现在要帮用户解决关于Python 3.6格式化字符串的问题。首先,用户可能想知道在Python 3.6中如何格式化字符串,特别是新的特性。Python 3.6引入了f-strings,也就是格式化字符串字面量,这是一个重要的新功能,应该详细解释。 用户可能已经知道旧的格式化方法,比如%操作符或者str.format(),但可能想了解更简洁的方式。我需要先确认用户是否了解这些旧方法,但根据问题直接指向3.6版本,可能用户已经知道需要介绍f-strings。 接下来,我应该分步骤介绍f-strings的用法,包括基本用法、嵌入表达式、调用函数、多行字符串、格式化选项等。同时,要强调f-strings的优点,比如可读性高、执行效率好,以及它们与其他方法的比较。 需要注意的是,用户可能遇到的一些常见问题,比如在旧版本中使用f-strings会导致语法错误,或者在大括号的使用上需要转义。此外,可能还要提到f-strings的性能优势,因为它们是在运行时进行表达式求值,而不是像其他方法那样可能需要先创建临时字符串。 用户可能想知道如何在大括号内使用引号,或者如何处理复杂的表达式,这些都需要例子来说明。另外,多行f-strings的使用场景和写法也是需要解释的。 最后,总结一下f-strings的适用场景和注意事项,确保用户能够正确使用,并避免常见的错误。可能还需要提醒用户检查Python版本,确保是3.6及以上,否则无法使用该特性。</think>关于 **Python 3.6 格式化字符串(f-strings)** 的详细介绍: --- ### **1. 什么是 f-strings?** Python 3.6 引入了 **格式化字符串字面值(Formatted String Literals)**,简称 **f-strings**。 它是一种在字符串中直接嵌入表达式(变量、函数调用等)的简洁语法,用前缀 `f` 或 `F` 标记。 --- ### **2. 基本用法** 直接在字符串前加 `f` 或 `F`,并用 `{ }` 包裹表达式,表达式会被自动求值并转换为字符串。 #### **示例** ```python name = "Alice" age = 25 # 直接嵌入变量 print(f"Name: {name}, Age: {age}") # 输出: Name: Alice, Age: 25 # 嵌入表达式 print(f"Next year, age will be {age + 1}") # 输出: Next year, age will be 26 ``` --- ### **3. 高级功能** #### **(1) 调用函数或方法** 可以在 `{ }` 中调用函数、方法或访问对象属性: ```python text = "hello" print(f"Uppercase: {text.upper()}") # 输出: Uppercase: HELLO import math print(f"π 的值是 {math.pi:.3f}") # 输出: π 的值是 3.142(保留3位小数) ``` #### **(2) 格式化选项** 通过 `:` 指定格式(与 `str.format()` 语法一致): ```python price = 99.99 quantity = 5 # 数字格式化 print(f"Total: {price * quantity:.2f} 元") # 输出: Total: 499.95 元 # 对齐与填充 print(f"{&#39;ID&#39;:<10}{&#39;Name&#39;:<10}") # 输出: ID Name print(f"{123:<10}{&#39;Alice&#39;:<10}") # 输出: 123 Alice ``` #### **(3) 多行字符串** 用三引号 `"""` 或 `&#39;&#39;&#39;` 包裹多行字符串: ```python name = "Bob" score = 95 message = f""" Name: {name} Score: {score}/100 """ print(message) ``` #### **(4) 嵌套大括号** 若需输出 `{` 或 `}`,需双写括号 `{{` 或 `}}`: ```python print(f"{{Hello}} {name}!") # 输出: {Hello} Bob! ``` --- ### **4. 与其他格式化方式的对比** #### **(1) % 格式化(旧式)** ```python print("Name: %s, Age: %d" % (name, age)) # 依赖顺序,可读性较差 ``` #### **(2) str.format()(新式)** ```python print("Name: {}, Age: {}".format(name, age)) # 需要占位符,稍显冗余 ``` #### **(3) f-strings 的优势** - **更简洁**:直接在字符串中嵌入变量,无需占位符。 - **更高效**:运行时直接求值,性能优于 `%` 和 `str.format()`。 - **更灵活**:支持复杂表达式、函数调用等。 --- ### **5. 注意事项** 1. **Python 版本要求**:仅适用于 Python 3.6+,旧版本会报语法错误。 2. **引号嵌套**:`{ }` 内若需使用引号,需与外部字符串的引号类型不同: ```python print(f&#39;He said: "{name} is {age} years old."&#39;) ``` 3. **表达式副作用**:避免在 `{ }` 中执行有副作用的操作(如修改全局变量)。 --- ### **6. 总结** - **f-strings 是 Python 3.6+ 中格式化字符串的最优解**,兼具简洁性和高效性。 - 适用于需要动态生成字符串的场景(如日志、输出、模板渲染等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值