关于#python#的问题:python如何把xlsx所有的['allstarx0', 'rating']变成12345

python如何把xlsx所有的['allstarx0', 'rating']变成12345
比如['allstar40', 'rating']变成4,['allstar30', 'rating']变成3,其他以此类推、

img

可以使用两个嵌套的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')