Python个人记录​

Python个人记录​

关于逻辑值的处理:

if判断取反不能用!, 运算时是短路的

并(and / &)
或(or / |)
否(not)

将excel文件内数据处理成批量插入SQL语句

import pandas as pd

def splicing2batch_insert_sql(file_path: str,sheet_name: str|int,table_name: str):
    df = pd.read_excel(file_path,sheet_name=sheet_name,skiprows=0, index_col=False,keep_default_na=True)
    cn = df.columns
    res = "INSERT INTO `{0}`(".format(table_name)
    for e in cn:
        res += ("`{0}`,").format(e)
    res = res[:-1]
    res+=") VALUES"
    for index, row in df.iterrows():
        ts = "("
        for e in cn:
            if pd.isna(row[e]):
                ts += "NULL,"
            elif not isinstance(row[e],(int,float)):
                ts += "'{0}',".format(str(row[e]))
            else:
                ts += str(row[e]) + ","
        res += ts[:-1]+"),"
    return res[:-1]+";"

ip是否存在


import ipaddress

def ip_in_range(target_ip, rule):
    rule = rule.strip()
    target_ip = target_ip.strip()
    target = ipaddress.ip_address(target_ip)

    # 1. 单个 IP 情况
    if "-" not in rule and "/" not in rule:
        return target == ipaddress.ip_address(rule)

    # 2. CIDR 网段
    if "/" in rule:
        net = ipaddress.ip_network(rule, strict=False)
        return target in net

    # 3. IP 段 (1.1.1.1-20)
    if "-" in rule:
        base, end = rule.split("-")
        base_ip = ipaddress.ip_address(base)
        # 只变化最后一段的简写:基于 base 生成 end IP
        end_ip = ipaddress.ip_address(".".join(base.split(".")[:-1] + [end]))
        return base_ip <= target <= end_ip
    return False

def ip_match_rules(ip,rules):
    return any(ip_in_range(ip,r) for r in rules)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值