You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字符串拼接:补全CSV文件中的缺失城市名

解决方案:基于有效城市库的缺失城市名修复

这个需求我之前帮朋友处理过,你的思路特别务实——用有效城市名单做校验基准,避免瞎拼接出无效名称,完全是正确的方向!下面给你一套完整的Python实现方案:

核心逻辑对齐你的思路

  1. 先加载独立的有效城市名单,作为“正确答案库”
  2. 从目标CSV的信息列末尾提取1-2个字母作为候选前缀
  3. 把前缀和缺首字母的城市名拼接,去匹配“正确答案库”
  4. 只有匹配成功的,才保留拼接结果;匹配失败就留原数据,方便后续处理

具体步骤&代码

1. 先准备好两个CSV文件

  • 待修复文件:比如叫broken_cities.csv,包含两列:partial_city(缺首字母的城市,比如w York)、info_with_prefix(末尾带缺失前缀的信息,比如word word Ne)
  • 有效城市库:比如叫valid_cities.csv,至少有一列full_city,存着所有正确的完整城市名(比如New York、London)

2. Python代码实现

import pandas as pd

# 第一步:加载有效城市名单,转成集合(集合的匹配速度比列表快N倍)
valid_cities = set(pd.read_csv('valid_cities.csv')['full_city'].str.strip())

# 第二步:读取需要修复的原始数据
df = pd.read_csv('broken_cities.csv')

# 第三步:写一个修复函数,核心是「提取前缀→拼接→验证」
def repair_city(row):
    # 先把两个列的内容都去个空格,避免多余空格搞砸匹配
    partial_city = row['partial_city'].strip()
    info_text = row['info_with_prefix'].strip()
    
    # 先试提取末尾2个字符(因为你示例里是缺2个字母),再试1个
    for prefix_length in [2, 1]:
        # 确保信息列长度够提取前缀,避免报错
        if len(info_text) >= prefix_length:
            candidate_prefix = info_text[-prefix_length:]
            # 拼接成完整城市名候选
            candidate_full_city = f"{candidate_prefix}{partial_city}"
            # 验证是否在有效城市库里
            if candidate_full_city in valid_cities:
                return candidate_full_city
    # 如果两种长度的前缀都匹配失败,返回原不完整城市名(或者你可以改成返回NaN)
    return partial_city

# 第四步:把修复函数应用到每一行,生成新的修复后列
df['fixed_city'] = df.apply(repair_city, axis=1)

# 第五步:保存修复后的结果
df.to_csv('fixed_cities.csv', index=False)

3. 关键细节解释

  • 用集合存有效城市:集合的in操作是O(1)时间复杂度,数据量大的时候比用列表快太多,效率拉满
  • 优先试2个字符前缀:因为你的示例是缺2个字母,先试长前缀能减少误匹配(比如避免把w York拼成Ew York这种无效名)
  • 去空格处理:实际工作里CSV经常会有多余空格,strip()能避免因为空格导致匹配失败
  • 容错处理:如果拼接后不在有效库,返回原数据,不会把错误结果塞进去,方便你后续人工排查那些匹配失败的行

4. 实际测试示例

假设你的原始数据是:

partial_cityinfo_with_prefix
w Yorkword word Ne
ondonmeeting notes L
arisreport draft Pa

有效城市库有New York、London、Paris,运行代码后,fixed_city列会得到:New York、London、Paris,完全符合预期!

内容的提问来源于stack exchange,提问作者studious1905

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:05:48