python如何把xlsx所有的['allstarx0', 'rating']变成12345
比如['allstar40', 'rating']变成4,['allstar30', 'rating']变成3,其他以此类推、
可以使用两个嵌套的for循环来遍历每个单元格,然后使用正则表达式来提取单元格值中的数字部分,再替换为这个数字。
import openpyxl
import re
# 打开xlsx文件
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.active
# 读取单元格值并替换为相应的数字
for row in sheet.rows:
for cell in row:
val = cell.value
# 使用正则表达式检查
if re.match(r"\['allstar\d{1,}0', 'rating'\]", str(val)):
# 使用捕获组捕获\d{1,},不包最后一个数字0
num = int(re.search(r"\['allstar(\d{1,})0', 'rating'\]", str(val)).group(1))
cell.value = num
# 保存修改后的xlsx文件
wb.save('example1.xlsx')
要读取指定单元格,需要使用第三方库openpyxl。下面是一个简单的示例:
import openpyxl
# 打开Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
# 获取工作表
worksheet = workbook.active
# 获取指定单元格的值
cell_value = worksheet.cell(row=2, column=3).value
print(cell_value)
在这个例子中,我们打开名为example.xlsx的Excel文件,获取活动的工作表,然后使用row和column参数获取第2行,第3列的单元格的值。
回到你的问题,你可以用FOR循环来遍历第二列的值,排除掉标题,你可以通过判断值,来达到你的目的:
import openpyxl
# 打开Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
# 获取工作表
worksheet = workbook.active
# 循环遍历第二列的所有单元格并进行修改
for cell in worksheet['B']:
if cell.value.startswith("allstar"):
cell.value = cell.value.strip()[-2:-1] # 在这里进行修改
# 保存更改
workbook.save('example.xlsx')