【自用】Python常用脚本

Python常用脚本

基本操作

使用装饰者模式修饰Dict的键值

from enum import Enum

def modify_dict(func):
    def wrapper(input_dict):
        modified_dict = {}
        for key, value in input_dict.items():
            modified_key, modified_value = func(key, value)
            modified_dict[modified_key] = modified_value
        return modified_dict
    return wrapper

@modify_dict
def add_quotation_marks_to_keys(key, value):
    return "\"" + key + '\"', value

class Position(Enum):
    BEFORE = 'before'
    AFTER = 'after'
    BOTH = 'both'

def add_symbol_to_keys_except_last(input_dict, symbol, position=Position.AFTER):
    result_dict = {}
    modified_dict = add_quotation_marks_to_keys(input_dict)
    keys = list(modified_dict.keys())
    last_key = keys[-1]
    for key, value in modified_dict.items():
        if key != last_key:
            if position == Position.BEFORE:
                modified_key = symbol + key
            elif position == Position.AFTER:
                modified_key = key + symbol
            elif position == Position.BOTH:
                modified_key = symbol + key + symbol
            else:
                raise ValueError("Position must be either 'before' or 'after'.")
        else:
            modified_key = key
        result_dict[modified_key] = value
    return result_dict

# Example usage:
original_dict = {"key1": 1, "key2": 2, "key3": 3}
new_dict = add_symbol_to_keys_except_last(original_dict, ",") # {'"key1",': 1, '"key2",': 2, '"key3"': 3}
print(new_dict)

数学运算

符号运算

复杂符号表达式转python函数
from sympy import symbols, cse

# 提取重复项作为函数参数
def extract_symbols(expr):
    symbols_set = set()
    for atom in expr.atoms():
        if atom.is_symbol:
            symbols_set.add(atom)
    return symbols_set

# 化简表达式并生成Python函数
def generate_simplified_func(symbol_expr):
    common_subexprs, simplified_expr = cse(symbol_expr)
    symbols = extract_symbols(symbol_expr)
    sorted_symbols = sorted(list(symbols), key=lambda x: x.name)
    function_args = ", ".join(str(symbol) for symbol in sorted_symbols)
    function_body = ""
    for common_subexpr in common_subexprs:
        function_body += f"\t{common_subexpr[0]} = {common_subexpr[1]}\n"
    function_body += f"\treturn {simplified_expr[0]}"
    function_code = f"def func({function_args}):\n{function_body}"
    return function_code

if __name__ == "__main__":
    # 定义符号变量
    a, b, c = symbols('a b c')

    # 定义复杂的符号表达式
    symbol_expr = a * b + a * (a * b + c) + b * (a * (a * b + c))

    # 主函数
    function_code = generate_simplified_func(symbol_expr)
    print(f"化简前:\n{symbol_expr}")
    print(f"化简后:\n{function_code}")

进程操作

VsCode:通过命令行调用实现对某一文件的格式化

import os
import subprocess

def format_cpp_file(file_path):
    if not os.path.exists(file_path):
        print("错误:文件不存在。")
        return

    try:
        subprocess.run(['E:/environment/vscode/Microsoft VS Code/code.exe', '--install-extension', 'ms-vscode.cpptools'])
        subprocess.run(['E:/environment/vscode/Microsoft VS Code/code.exe', '--format', f'"{file_path}"'])
        print("格式化完成。")
    except Exception as e:
        print("格式化失败:", e)

if __name__ == "__main__":
    file_to_format = "E:/ProjectCpp/test/A01.Algorithm/scripts/python/main.cpp"
    format_cpp_file(file_to_format)

数据处理

excel操作(挖坑)

画图(挖坑)

TO BE CONTINUE

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值