如何用Python对CSV文件中题号-答案数据升序排列并拆分至独立单元格
解决方案
没问题,这事儿很简单,我给你写个清晰的Python脚本,一步到位处理你的需求:
思路拆解
- 先把你提供的逗号分隔字符串拆成单个的「题号:答案」条目
- 逐个解析每个条目,把题号转成整数(方便排序),同时处理像
31:这种空答案的情况 - 按题号从小到大排序所有条目
- 把排序后的数据写入新的CSV文件,每个题号和答案各占一个单元格
完整代码
import csv # 你的原始数据(如果是从文件读取的话,可以换成读取文件的代码) raw_data = "30:2,29:3,28:2,13:3,12:3,5:5,10:4,4:4,11:2,3:3,1:4,2:4,31:,32:4,6:5,9:5,7:2,8:3,22:3,21:3,18:4,16:2,20:4,19:4,23:2,27:4,14:2,26:2,24:3,25:3" # 拆分每个题号-答案对 entries = raw_data.split(',') # 处理每个条目,转换成可排序的格式 sorted_entries = [] for entry in entries: # 只拆分一次冒号,避免答案里有冒号的情况(虽然你的例子里没有,但这样更健壮) q_num_str, ans = entry.split(':', 1) q_num = int(q_num_str) sorted_entries.append( (q_num, ans) ) # 按题号升序排序 sorted_entries.sort(key=lambda x: x[0]) # 写入输出CSV output_filename = "sorted_question_answers.csv" with open(output_filename, 'w', newline='', encoding='utf-8') as csv_file: writer = csv.writer(csv_file) # 写入表头 writer.writerow(["题号", "答案"]) # 写入所有排序后的数据 writer.writerows(sorted_entries) print(f"搞定!排序后的CSV已经保存到 {output_filename}")
代码说明
- 用
split(',')把长字符串拆成单个条目,split(':',1)确保即使答案里有冒号(比如特殊场景)也不会出错 - 把题号转成整数是为了让排序是数值排序(而不是字符串排序,比如避免10排在2前面)
newline=''是Python写入CSV的最佳实践,防止Windows系统下出现多余的空行- 空答案的条目(比如31)会原样保留,写入CSV时对应单元格就是空的
运行这个脚本后,你会得到一个新的CSV文件,里面的数据是按题号从1到32升序排列的,每个题号和答案各占一列,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Rafiullah Khan
相关产品推荐
相关产品推荐

