从分隔符不一致的CSV文件提取指定值的问题求助
解决思路:提取目标数字的两种有效方法
看起来你卡在了从混合字符串里提取特定数字的环节,先帮你分析下现有代码的问题,再给你两种靠谱的解决办法:
你的代码为什么没生效?
你写的代码只是对字符串做了多层分割(换行→逗号→换行),但完全没有筛选和收集目标数字的逻辑——既没有判断哪些元素是你要的数字,也没有把符合条件的内容存起来,所以自然输出不了想要的结果。
方法一:用正则表达式(最简洁高效)
观察你的数据结构,每个目标数字都符合,[数字],7的格式(比如,1375,7),用正则可以直接匹配所有这类数字,一步到位:
import re # 你的原始数据 data = r"\N PARIS PREMIERE,1375,7 RTL9,1376,7 TV BREIZH,1162,7 C+ CINEMA,1594,7 \N C+ SPORT,1595,7 OCS MAX,799,7" # 匹配所有在 , 和 ,7 之间的数字,提取分组里的内容 target_matches = re.findall(r',(\d+),7', data) # 把匹配到的数字用空格连接成结果字符串 result = ' '.join(target_matches) print(result) # 输出:1375 1376 1162 1594 1595 799
方法二:分割后按索引筛选(不用正则)
如果不想用正则,可以先把整个字符串按逗号分割,然后观察目标数字的位置:它们都在分割后列表的第1、3、5...位(索引从0开始),直到倒数第二个元素(最后一个是要排除的7)。
data = r"\N PARIS PREMIERE,1375,7 RTL9,1376,7 TV BREIZH,1162,7 C+ CINEMA,1594,7 \N C+ SPORT,1595,7 OCS MAX,799,7" # 按逗号分割所有元素 split_items = data.split(',') # 提取索引1、3、5...的元素,strip()确保去掉可能的空格 target_numbers = [split_items[i].strip() for i in range(1, len(split_items)-1, 2)] # 拼接成结果 result = ' '.join(target_numbers) print(result) # 输出:1375 1376 1162 1594 1595 799
两种方法都能得到你想要的输出,选哪种看你习惯~
内容的提问来源于stack exchange,提问作者Iriel
相关产品推荐
相关产品推荐

