多类型引号字符串清洗:身高数据标准化方案求助
身高数据引号统一清洗方案
可用的文本规范化库
你可以使用ftfy(Fix Text For You)这类通用文本修复库,它能自动识别并替换各种Unicode标点为标准形式,包括你遇到的这类特殊引号。安装后只需调用简单的API就能完成规范化:
from ftfy import fix_text cleaned_height = fix_text("5’4″") # 输出: "5'4""
不过如果只是针对这个特定的引号替换需求,直接用正则表达式会更轻量,无需额外依赖。
简洁正则表达式实现
直接用正则的字符集匹配所有需要替换的相似符号,分两步完成替换:
import re def normalize_height_quotes(height_str): # 替换所有英尺类引号(右单引号、prime符号、左单引号)为标准单引号 height_str = re.sub(r'[’′‘]', "'", height_str) # 替换所有英寸类引号(double prime、右双引号、左双引号)为标准双引号 height_str = re.sub(r'[″”“]', '"', height_str) # 可选:移除英尺与英寸之间的多余空格(如需要统一格式为无空格形式) # height_str = re.sub(r'(?<=\')\s+(?=")', '', height_str) return height_str # 测试示例 print(normalize_height_quotes("5’4″")) # 输出: 5'4" print(normalize_height_quotes("5′ 9″")) # 输出: 5' 9"(启用可选规则后为5'9")
正则说明
[’′‘]:匹配所有需要替换成单引号的相似字符,涵盖常见的Unicode单引号变体[″”“]:匹配所有需要替换成双引号的相似字符,涵盖double prime及左右双引号- 可选的空格移除规则使用正向断言,只删除单引号和双引号之间的空格,不影响其他位置的空格
内容的提问来源于stack exchange,提问作者Wilhelm
相关产品推荐
相关产品推荐

