#线程
# 第一个工作函数
def worker1():
for i in range(5):
print("Worker 1: ", i)
time.sleep(1)
# 第二个工作函数
def worker2():
for i in range(15):
print("Worker 2: ", i)
# 创建两个线程
t1 = threading.Thread(target=worker1)
t2 = threading.Thread(target=worker2)
# 启动线程
t1.start()
t2.start()
# 等待线程结束
t1.join()
t2.join()
字符串格式化
这个方便的代码片段将让你在Python中格式化你的字符串。下面我分享了三种格式化字符串的方法。请看下面的代码。
# 字符串格式化
name = "Wick"
age = "24"
# 使用 f-字符串
print(f"Hello {name}, you are {age} years old")
# 使用 .format() 方法
print("Hello {}, you are {} years old".format(name, age))
# 使用 %s 格式符
print("Hello %s, you are %s years old" % (name, age))
# 处理CSV
import csv
# 读取CSV
with open('mydata.csv', 'r') as file:
r = csv.reader(file) # 创建CSV reader对象
for row in r: # 遍历每一行
print(row) # 输出每一行数据
# 写入CSV
with open('mydata.csv', 'w', newline='') as file:
w = csv.writer(file) # 创建CSV writer对象
w.writerow(['name', 'age']) # 写入一行数据
w.writerow(['Mathew', '23'])
# 使用列表推导式# 传统方法data = [100, 200, 300, 400, 500]result = []for x in data: result.append(x * 20)print(result) # [2000, 4000, 6000, 8000, 10000]
# 推导式方法data = [100, 200, 300, 400, 500]result = [x * 20 for x in data]print(result) # [2000, 4000, 6000, 8000, 10000]
# 映射和过滤
# 使用map
def mul(n):
return n * n
num = [1, 2, 3, 4, 5]
result = list(map(mul, num)) # 使用map函数对列表num中的每个元素应用mul函数,返回新的列表
print(result) # [1, 4, 9, 16, 25]
# 使用filter
def is_odd(n):
return n % 2 == 1
num = [1, 2, 3, 4, 5]
result = list(filter(is_odd, num)) # 使用filter函数对列表num中的每个元素应用is_odd函数,过滤出符合条件的元素,返回新的列表
print(result) # [1, 3, 5]
# 使用生成器
def iterate(n):
i = 0
while i < n:
yield i
i += 1
for i in iterate(10):
print(i)
# 使用字典推导式
# 普通方式
data = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
result = {}
for key, value in data.items(): # 遍历字典data中的键值对
if value > 2: # 如果值大于2
result[key] = value # 将键值对添加到结果字典result中
print(result) # {'c': 3, 'd': 4}
# 推导式方式
data = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
result = {key: value for key, value in data.items() if value > 2} # 使用字典推导式,筛选出值大于2的键值对,并构造新的字典result
print(result) # {'c': 3, 'd': 4}
# 格式化输出
输出结果:
{'c': 3, 'd': 4}
{'c': 3, 'd': 4}
# 正则表达式
import re
# 在字符串中查找匹配的模式
string = "A string with numbers 1234567890"
result = re.search(r"\d\d\d\d\d\d\d\d\d\d", string) # 在字符串中查找匹配的模式,该模式表示10个数字的序列
print(result.group()) # 打印匹配到的结果
# 查找电子邮件地址
string = "My email is xyz@email.com"
result = re.search(r"\w+@\w+\.\w+", string) # 在字符串中查找匹配的模式,该模式表示一个或多个单词字符、@符号、一个或多个单词字符、.符号和一个或多个单词字符
print(result.group()) # 打印匹配到的结果
# \w+ 表示一个或多个单词字符
# \w* 表示零个或多个单词字符
# \w? 表示零个或一个单词字符
# \d+ 表示一个或多个数字
# a-z 表示从a到z的小写字母
# A-Z 表示从A到Z的大写字母
# \s+ 表示一个或多个空格字符
# 格式化输出
输出结果:
1234567890
xyz@email.com