字符串怎么表示?四种姿势任你选
Python里表示字符串有4种方式:
# 单引号name = '老李'# 双引号city = "郑州"# 三单引号(可换行)poem = '''床前明月光,疑是地上霜。'''# 三双引号(也可换行)doc = """这是文档可以写多行"""
为啥提供这么多种? 为了方便你在字符串里包含引号。# 字符串里有双引号,外面用单引号s1 = '我说:"你好"'# 字符串里有单引号,外面用双引号s2 = "It's OK"# 既有单又有双,外面用三引号s3 = '''他说:"It's fine"'''
凡是引号配对正确,怎么舒服怎么来。
索引和切片:像切蛋糕一样切字符串
字符串是有序的字符序列,每个字符都有编号。
正向编号从0开始,负向编号从-1开始(最后一个字符):
正: 0 1 2 3 4 5 P y t h o n负: -6 -5 -4 -3 -2 -1
索引:取单个字符
s = "Python"print(s[0]) # Pprint(s[-1]) # n
切片:取一段子串
s[M:N] 取从M到N-1的字符(包头不包尾)
s = "Python"print(s[0:4]) # Pythprint(s[2:5]) # thoprint(s[:4]) # Pyth(开头省略,从头开始)print(s[2:]) # thon(结尾省略,到末尾)print(s[-3:]) # hon(最后三个)
切片高级玩法:步长
s[M:N:K] 中K是步长,可以跳着取。
s = "一二三四五六七八九十"print(s[1:8:2]) # 二四六八(从索引1到7,每2个取一个)print(s[::2]) # 一三五七九(每隔一个取)print(s[::-1]) # 十九八七六五四三二一(倒序)
有没有觉得[::-1]直接倒序特别酷?我第一次用的时候惊了。
操作符:拼接、复制、判断成员
+ 拼接
first = "老"last = "李"name = first + last # "老李"
* 复制
line = "=" * 20 # "===================="print(line)
in 判断是否包含
sentence = "我爱Python编程"print("Python" in sentence) # Trueprint("Java" in sentence) # False
我用这个做过敏感词过滤:如果用户输入包含某个词,就提示“输入不合法”。
常用字符串处理函数(不是方法)
函数是直接调用的,比如len(str)。
| | |
|---|
len(x) | | len("Python") |
str(x) | | str(3.14) |
chr(u) | | chr(9801) |
ord(c) | | ord('老') |
好玩的东西:Unicode字符
每个字符都有一个数字编号(Unicode码)。Python可以直接处理。
# 打印所有星座符号(♈♉♊♋♌♍♎♏♐♑♒♓)for i in range(12): print(chr(9800 + i), end="")# ♈♉♊♋♌♍♎♏♐♑♒♓# 看看“规划”俩字的编码print(ord('规'), ord('划')) # 35268 21010
以后想在字符串里加特殊符号,不用复制粘贴,直接用chr()。
字符串方法:变量.方法() 的姿势
方法属于某个对象,比如字符串变量后面点出来的函数。
.lower() / .upper() 大小写转换
text = "Hello World"print(text.lower()) # hello worldprint(text.upper()) # HELLO WORLD
.split() 切割成列表
data = "苹果,香蕉,橘子"fruits = data.split(",")print(fruits) # ['苹果', '香蕉', '橘子']# 不传参数默认按空格切words = "我 爱 Python".split()print(words) # ['我', '爱', 'Python']
.count() 统计子串出现次数
s = "an apple a day"print(s.count("a")) # 4(小写a)
.replace() 替换
s = "我讨厌Python"new_s = s.replace("讨厌", "喜欢")print(new_s) # 我喜欢Python
.center() 居中填充
title = "学习报告"print(title.center(20, "="))# ========学习报告========
.strip() 去除首尾指定字符(默认空格)
s = " hello "print(s.strip()) # "hello"s2 = "=Python="print(s2.strip("=")) # "Python"
.join() 用分隔符连接列表元素(与split相反)
words = ["我", "爱", "Python"]sentence = "-".join(words)print(sentence) # 我-爱-Python
这个超级实用,比如把列表变成逗号分隔的字符串。
综合案例:文本清洗小工具
把今天学的知识点揉在一起,写一个处理用户评论的功能:去空格、统一小写、过滤敏感词。
# 原始评论(带大小写、首尾空格、标点)comments = [ " Python真难学 ", "我好喜欢编程", " PYTHON是最好语言的!", " hate this ", " python 万岁 "]sensitive_words = ["hate", "讨厌", "笨"]print("原始评论:")for i, c in enumerate(comments): print(f"{i+1}. {c}")print("\n开始清洗...")clean_comments = []for c in comments: # 去除首尾空格 c = c.strip() # 转换为小写 c = c.lower() # 检查敏感词 for word in sensitive_words: if word in c: c = c.replace(word, "***") clean_comments.append(c)print("\n清洗后:")for i, c in enumerate(clean_comments): print(f"{i+1}. {c}")# 用join输出为一个段落all_text = " | ".join(clean_comments)print(f"\n合并后:{all_text}")# 统计一下总字符数(不包括空格)total_len = sum(len(c.replace(" ", "")) for c in clean_comments)print(f"有效字符总数(不含空格):{total_len}")
运行结果:
原始评论:1. Python真难学 2. 我好喜欢编程3. PYTHON是最好语言的!4. hate this 5. python 万岁 开始清洗...清洗后:1. python真难学2. 我好喜欢编程3. python是最好语言的!4. *** this5. python 万岁合并后:python真难学 | 我好喜欢编程 | python是最好语言的! | *** this | python 万岁有效字符总数(不含空格):43
清理用户输入的文本数据。平时觉得没用的方法,凑在一起就能干活。
我的一点小感悟
join和split,让我明白了:编程很多时候就是把“一大块”拆成“小块”处理,再拼回去。
📌 今日学习笔记:
学到了什么:
字符串4种表示:单引号、双引号、三单引号、三双引号
索引(正向从0开始,反向从-1开始)
切片:[M:N] 包前不包后,[M:N:K] 步长,[::-1] 倒序
操作符:+ 拼接,* 复制,in 成员判断
函数:len()、str()、chr()、ord()
方法:.lower()、.upper()、.split()、.count()、.replace()、.center()、.strip()、.join()
踩坑记录:
切片索引超出范围不会报错,比如 s[2:100] 只返回到末尾,不报错
s.split() 默认按任意空白字符(空格、换行等)切,多个空格会切出空字符串,最好明确指定分隔符
.strip() 只去首尾,不去中间空格,一开始错以为是全局去空格
用时: 1小时
📢 我是老李,35岁规划师,从零开始学AI。
每天1小时,记录真实学习路。不求成为大神,只为多一条出路。
如果你也在传统行业或者对未来感到焦虑,如果你也想学点新东西但一直没有开始
点击关注,我们一起进步;
也欢迎点赞 ❤️ 分享 ➕ 推荐,让更多同行者看到!
👇👇👇