将shelve读取的混乱字符串格式化为列表或字典
这就帮你把这组拆分混乱的印度邦与首府数据整理成规范格式,顺便附上自动处理的Python代码,以后遇到类似从shelve读取后拆分的字符串问题也能用~
整理后的印度各邦及首府信息
规范列表格式
- Andhra Pradesh – Hyderabad (Proposed Capital: Amaravati in Guntur district. See below.)
- Arunachal Pradesh – Itanagar
- Assam – Dispur
- Bihar – Patna
- Goa – Panaji
- Gujarat – Gandhinagar
- Haryana – Chandigarh
- Himachal Pradesh – Shimla
- Jammu & Kashmir – Srinagar (Winter : Jammu)
- Karnataka – Bangalooru
规范字典格式
indian_states_capitals = { "Andhra Pradesh": "Hyderabad (Proposed Capital: Amaravati in Guntur district. See below.)", "Arunachal Pradesh": "Itanagar", "Assam": "Dispur", "Bihar": "Patna", "Goa": "Panaji", "Gujarat": "Gandhinagar", "Haryana": "Chandigarh", "Himachal Pradesh": "Shimla", "Jammu & Kashmir": "Srinagar (Winter : Jammu)", "Karnataka": "Bangalooru" }
自动处理混乱数据的Python代码
如果你需要批量处理这类拆分的字符串,这段代码可以自动合并不完整条目并转换为规范格式:
# 从shelve读取的原始混乱字符串列表 raw_shelve_data = [ 'Andhra Pradesh – Hyderabad (Proposed Capital: Amaravati in Guntur district. See ', 'below.)', 'Arunachal Pradesh – Itanagar', 'Assam – Dispur', 'Bihar – Patna', 'Goa – Panaji', 'Gujarat – Gandhinagar', 'Haryana – Chandigarh', 'Himachal Pradesh – Shimla', 'Jammu & Kashmir – Srinagar (Winter : Jammu)', 'Karnataka – Bangalooru...' ] # 合并被拆分的条目 processed_entries = [] current_entry = "" for segment in raw_shelve_data: # 判断当前片段是否是独立条目(包含分隔符" – ") if " – " not in segment and current_entry: current_entry += segment.strip() else: if current_entry: processed_entries.append(current_entry) current_entry = segment.strip() # 处理最后一个条目,去掉末尾的省略号 if current_entry: processed_entries.append(current_entry.rstrip('...')) # 转换为字典格式 state_capital_map = {} for entry in processed_entries: state_name, capital_info = entry.split(" – ", 1) state_capital_map[state_name.strip()] = capital_info.strip() # 输出整理后的结果 print("=== 整理后的列表 ===") for item in processed_entries: print(f"- {item}") print("\n=== 整理后的字典 ===") for state, capital in state_capital_map.items(): print(f"{state}: {capital}")
内容的提问来源于stack exchange,提问作者Dan Mahowny
相关产品推荐
相关产品推荐

