Python正则捕获组如何排除字符?求Jupyter Pandas替代处理方案
价格格式捕获与Pandas数据修正方案
一、正则表达式调整
要把捕获到的"5.400"直接转成"5400",有两种实用方式:
方式1:先捕获完整价格文本,再移除小数点
保留原正则的捕获逻辑(确保拿到完整的价格字符串):"...GO-Results-?T?o?p?-Price-TXT-Regular">(?P<cena>.*?) €</div>'捕获后对
cena字段做字符串替换,去掉小数点就行,比如Python里用match.group('cena').replace('.', '')。方式2:正则精准匹配数字部分
把捕获组改成匹配包含小数点的数字格式,后续再移除小数点:"...GO-Results-?T?o?p?-Price-TXT-Regular">(?P<cena>\d+\.\d+) €</div>'这种写法更精准,避免捕获到无关字符,之后同样用
replace('.', '')处理即可。
二、Pandas数据处理方案
如果已经把带小数点的价格导入Pandas,且被自动识别成了浮点数(比如5.400变成5.4),按以下步骤修正:
恢复原始字符串格式
如果是从文件导入的,导入时指定dtype={'cena': str}防止自动转换;如果已经是浮点数,先转成带三位小数的字符串:df['cena'] = df['cena'].apply(lambda x: f"{x:.3f}" if isinstance(x, float) else str(x))移除小数点并转为整数
df['cena'] = df['cena'].str.replace('.', '').astype(int)这样就能得到正确的5400数值。
如果是正则提取后直接存Pandas,建议先处理字符串再转数值:
# 假设正则提取后得到的是带小数点的字符串列 df['cena'] = df['cena'].str.replace('.', '').astype(int)
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

