python - 给定整数参数Python时的字符串操作
问题描述
我正在处理一个 SVG 文件。我有这个字符串作为一种风格
'.cls-1{fill:#755841;}.cls-2{fill:#f7c394;}.cls-3{fill:#9b7657;}.cls-
4{fill:#7f6145;}.cls-5{fill:#ffc9a1;}.cls-6{fill:#ffcd98;}.cls-
7{fill:#3d0c0c;}.cls-8{fill:#fff;}.cls-9{fill:#313cc4;}'
我想创建一个函数,它接收输入说 14 并将此字符串更改为从输入继续的数字开始。例如这里的类将从 14 + 1 = 15 开始,依此类推:
'.cls-15{fill:#755841;}.cls-16{fill:#f7c394;}.cls-17{fill:#9b7657;}.cls-
18{fill:#7f6145;}.cls-19{fill:#ffc9a1;}.cls-20{fill:#ffcd98;}.cls-
21{fill:#3d0c0c;}.cls-22{fill:#fff;}.cls-23{fill:#313cc4;}'
不确定什么是最好的方法。是正则表达式吗?
解决方案
您可以使用以下方式:
包括对外部范围的访问:
import re
start_point = 5
input_value = """.cls-1{fill:#755841;}.cls-2{fill:#f7c394;}.cls-3{fill:#9b7657;}.cls-4{fill:#7f6145;}.cls-5{fill:#ffc9a1;}.cls-6{fill:#ffcd98;}.cls-7{fill:#3d0c0c;}.cls-8{fill:#fff;}.cls-9{fill:#313cc4;}"""
def callback(match):
global start_point
start_point += 1
return '{key}{value}'.format(
key=match.group(1),
value=start_point
)
result = re.sub('(cls-)([0-9]+)', callback, input_value)
print(result)
无法访问外部范围:
import re
from functools import partial
start_point = 5
input_value = """.cls-1{fill:#755841;}.cls-2{fill:#f7c394;}.cls-3{fill:#9b7657;}.cls-4{fill:#7f6145;}.cls-5{fill:#ffc9a1;}.cls-6{fill:#ffcd98;}.cls-7{fill:#3d0c0c;}.cls-8{fill:#fff;}.cls-9{fill:#313cc4;}"""
def callback(point, match):
point[0] += 1
return '{key}{value}'.format(
key=match.group(1),
value=point[0]
)
func = partial(callback, [start_point])
result = re.sub('(cls-)([0-9]+)', func, input_value)
print(result)
结果:
- 输入: .cls-1{fill:#755841;}.cls-2{fill:#f7c394;}.cls-3{fill:#9b7657;}.cls-4{fill:#7f6145;}.cls-5 {fill:#ffc9a1;}.cls-6{fill:#ffcd98;}.cls-7{fill:#3d0c0c;}.cls-8{fill:#fff;}.cls-9{fill:#313cc4; }
- 起点: 5
- 输出: .cls-6{fill:#755841;}.cls-7{fill:#f7c394;}.cls-8{fill:#9b7657;}.cls-9{fill:#7f6145;}.cls-10 {fill:#ffc9a1;}.cls-11{fill:#ffcd98;}.cls-12{fill:#3d0c0c;}.cls-13{fill:#fff;}.cls-14{fill:#313cc4; }
推荐阅读
- kubernetes - 父/子 kubernetes pod 通信
- r - 为什么逐元素矩阵乘法会为 R 中的相同数字提供不同的输出?
- javascript - 使用节点 js 将数据写入 firebase 时遇到问题
- javascript - 使用 Change 函数检测元素属性的变化
- keycloak - 在 keycloak 上执行 kcadm 命令
- geopandas - 将球形地形映射到 Geopandas 和 Cartopy(蛋白质表面制图)
- python - Django JSONField:我无法使用查找进行查询
- django - Django Carton,更改了 cart.add() 函数,以便我可以为产品添加选项
- python - Window docker 没有在 WSL2 上选择 cuda
- python - 如何重命名最新下载的文件?