Skip to content

字符串

定义字符串

python
# 1. 单引号
name = 'tom'

# 2. 双引号
name = "jerry"

# 3. 多行字符串(注意这不是多行注释)
name = """
hello tom,
i am jerry
"""

字符串拼接

注意: python 中是使用 + 来拼接字符串的, 但是与 js 中不同的是, 无法自动转换类型, 只能是字符串拼接字符串, 或者数字与数字进行运算

python
print("hello " + "world")
print(11 + 22)
# print("hello" + 15) # 这样是不行的, 需要先转换类型
print("hello" + str(15))  # 这样才可以拼接

字符串格式化

占位符

占位符了解:

%s: 将内容转字符串并且放入占位符 %d: 将内容转整数并且放入占位符 %f: 将内容转浮点数并且放入占位符

python
# 注意这种方式会自动将变量的数据类型转换成字符串
name = "tom"
age = 11
msg = "hi, my name is %s, i'm %s years old" % (name, age)
print(msg) # hi, i am 11

f 模板

python
name = "tom"
age = 10
intro = f"hi, my nam is {name}, i'm {age} years old"

print(intro) # hi, my nam is tom, i'm 10 years old

print(f"1+1={1+1}") # 1+1=2

input 获取输入

input 方法返回一个字符串, input 方法会让代码停止执行, 等待用户输入, 按下 enter 结束, 然后执行后续代码

python
password = input("请输入密码:")
print(f"你的密码是:{password}")

常用方法

字符串常用方法请查看文档

正则表达式

官方正则表达式文档

创建正则

python
reg = r"^\d+$"

匹配字符串

python
import re

# 从头到尾必须是数字
reg = r"^\d+$"

# 无法匹配到就返回 None
print(re.match(reg, "12345")) # re.Match object
print(re.match(reg, "abc12")) # None
print(re.match(reg, "123ab")) # None

分组匹配

python
import re

matched = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')

if matched:
    print(matched.groups()) # 返回一个所有分组匹配结果的元组 ('010', '12345')
    print(matched.group(1)) # 返回第 1 个分组匹配的内容 010
    print(matched.group(2)) # 返回第 2 个分组匹配的内容 12345

查找子字符串

python
import re

str1 = "hello world, hi python, hahaha"
regex = re.compile('h\\w+')

data = regex.findall(str1)
print(f"data: {data}")
print(f"type: {type(data)}")
# data: ['hello', 'hi', 'hon', 'hahaha']
# type: <class 'list'>

分割字符串

python
import re

str1 = "abc_123-asf=345@kds"
chunks = re.split(r"[\_\-\=\@]", str1)

print(f"chunks: {chunks}")
print(f"type  : {type(chunks)}")

# console output:
# chunks: ['abc', '123', 'asf', '345', 'kds']
# type  : <class 'list'>

替换字符串

python
import re

str1 = "hello world, hello python"
str2 = re.sub(r"hello", "hi", str1)

print(str2) # hi world, hi python

Released under the MIT License.