python实现两个txt文件提取不同的数据

1.首先提供两个txt文件,分别是1.txt和2.txt

1.txt文件中的内容:
['哈尔滨市', '齐齐哈尔市', '鸡西市', '鹤岗市', '双鸭山市', '大庆市', '伊春市', '佳木斯市', '七台河市', '牡丹江市', '黑河市', '绥化市', '大兴安岭地区', '阿拉善盟', '巴彦淖尔市', '包头市', '赤峰市', '鄂尔多斯市', '呼和浩特市', '呼伦贝尔市', '通辽市', '乌海市', '乌兰察布市', '乌兰浩特市', '锡林郭勒盟', '兴安盟', '鞍山市', '本溪市', '朝阳市', '大连市', '丹东市', '抚顺市', '阜新市', '葫芦岛市', '锦州市', '辽阳市', '盘锦市', '沈阳市', '铁岭市', '营口市', '白城市', '白山市', '吉林市', '辽源市', '四平市', '松原市', '通化市', '延边朝鲜族自治州', '长春市', '安阳市', '鹤壁市', '济源市', '焦作市', '开封市', '洛阳市', '漯河市', '南阳市', '平顶山市', '濮阳市', '三门峡市', '商丘市', '新乡市', '信阳市', '许昌市', '郑州市', '周口市', '驻马店市', '深圳市', '东莞市', '惠州市', '河源市', '汕尾市', '汕头市', '潮州市', '梅州市', '佛山市', '广州市', '江门市', '揭阳市', '茂名市', '清远市', '韶关市', '阳江市', '云浮市', '湛江市', '肇庆市', '中山市', '珠海市', '百色市', '北海市', '崇左市', '防城港市', '贵港市', '桂林市', '河池市', '贺州市', '来宾市', '柳州市', '南宁市', '钦州市', '梧州市', '玉林市', '白沙黎族自治县', '保亭黎族苗族自治县', '昌江黎族自治县', '澄迈县', '儋州市', '定安县', '东方市', '海口市', '海南省直辖行政单位', '乐东黎族自治县', '临高县', '陵水黎族自治县', '琼海市', '琼中黎族苗族自治县', '三沙市', '三亚市', '屯昌县', '万宁市', '文昌市', '五指山市', '香港特别行政区', '澳门特别行政区', '北京市', '保定市', '沧州市', '承德市', '邯郸市', '衡水市', '廊坊市', '秦皇岛市', '三河市', '石家庄市', '唐山市', '邢台市', '张家口市', '天津市', '大同市', '晋城市', '晋中市', '临汾市', '吕梁市', '朔州市', '太原市', '忻州市', '阳泉市', '运城市', '长治市', '安庆市', '蚌埠市', '亳州市', '池州市', '滁州市', '阜阳市', '合肥市', '淮北市', '淮南市', '黄山市', '六安市', '马鞍山市', '宿州市', '铜陵市', '芜湖市', '宣城市', '福州市', '龙岩市', '南平市', '宁德市', '莆田市', '泉州市', '三明市', '厦门市', '漳州市', '无锡市', '镇江市', '泰州市', '常州市', '苏州市', '南通市', '淮安市', '连云港市', '南京市', '宿迁市', '徐州市', '盐城市', '扬州市', '杭州市', '湖州市', '嘉兴市', '金华市', '丽水市', '宁波市', '衢州市', '绍兴市', '台州市', '温州市', '舟山市', '滨州市', '德州市', '东营市', '菏泽市', '济南市', '济宁市', '莱芜市', '聊城市', '临沂市', '日照市', '泰安市', '枣庄市', '诸城市', '淄博市', '青岛市', '潍坊市', '烟台市', '威海市', '上海市', '白银市', '定西市', '甘南藏族自治州', '嘉峪关市', '金昌市', '酒泉市', '兰州市', '临夏回族自治州', '陇南市', '平凉市', '庆阳市', '天水市', '武威市', '张掖市', '阿克苏地区', '阿拉尔市', '阿勒泰地区', '巴音郭楞蒙古自治州', '北屯市', '博尔塔拉蒙古自治州', '昌吉回族自治州', '哈密市', '和田地区', '胡杨河市', '喀什地区', '可克达拉市', '克拉玛依市', '克孜勒苏柯尔克孜自治州', '昆玉市', '石河子市', '塔城地区', '铁门关市', '图木舒克市', '吐鲁番市', '乌鲁木齐市', '五家渠市', '新疆自治区省直辖行政单位', '伊犁哈萨克自治州', '安康市', '宝鸡市', '汉中市', '华阴市', '商洛市', '铜川市', '渭南市', '西安市', '咸阳市', '兴平市', '延安市', '榆林市', '果洛藏族自治州', '海北藏族自治州', '海东市', '海南藏族自治州', '海西蒙古族藏族自治州', '黄南藏族自治州', '西宁市', '玉树藏族自治州', '固原市', '石嘴山市', '吴忠市', '银川市', '中卫市', '抚州市', '赣州市', '吉安市', '景德镇市', '九江市', '南昌市', '萍乡市', '上饶市', '新余市', '宜春市', '鹰潭市', '鄂州市', '恩施土家族苗族自治州', '湖北省直辖行政单位', '黄冈市', '黄石市', '荆门市', '荆州市', '潜江市', '神农架林区', '十堰市', '随州市', '天门市', '武汉市', '仙桃市', '咸宁市', '襄阳市', '孝感市', '宜昌市', '常德市', '郴州市', '衡阳市', '怀化市', '娄底市', '邵阳市', '湘潭市', '湘西土家族苗族自治州', '益阳市', '永州市', '岳阳市']
2.txt文件中的内容:
['北京市', '天津市', '石家庄市', '唐山市', '秦皇岛市', '邯郸市', '邢台市', '保定市', '张家口市', '承德市', '沧州市', '廊坊市', '衡水市', '太原市', '大同市', '阳泉市', '长治市', '晋城市', '朔州市', '晋中市', '运城市', '忻州市', '临汾市', '吕梁市', '呼和浩特市', '包头市', '乌海市', '赤峰市', '通辽市', '鄂尔多斯市', '呼伦贝尔市', '巴彦淖尔市', '乌兰察布市', '兴安盟', '锡林郭勒盟', '阿拉善盟', '沈阳市', '大连市', '鞍山市', '抚顺市', '本溪市', '丹东市', '锦州市', '营口市', '阜新市', '辽阳市', '盘锦市', '铁岭市', '朝阳市', '葫芦岛市', '长春市', '吉林市', '四平市', '辽源市', '通化市', '白山市', '松原市', '白城市', '延边朝鲜族自治州', '哈尔滨市', '齐齐哈尔市', '鸡西市', '鹤岗市', '双鸭山市', '大庆市', '伊春市', '佳木斯市', '七台河市', '牡丹江市', '黑河市', '绥化市', '大兴安岭地区', '上海市', '南京市', '无锡市', '徐州市', '常州市', '苏州市', '南通市', '连云港市', '淮安市', '盐城市', '扬州市', '镇江市', '泰州市', '宿迁市', '杭州市', '宁波市', '温州市', '嘉兴市', '湖州市', '绍兴市', '金华市', '衢州市', '舟山市', '台州市', '丽水市', '合肥市', '芜湖市', '蚌埠市', '淮南市', '马鞍山市', '淮北市', '铜陵市', '安庆市', '黄山市', '滁州市', '阜阳市', '宿州市', '六安市', '亳州市', '池州市', '宣城市', '福州市', '厦门市', '莆田市', '三明市', '泉州市', '漳州市', '南平市', '龙岩市', '宁德市', '南昌市', '景德镇市', '萍乡市', '九江市', '新余市', '鹰潭市', '赣州市', '吉安市', '宜春市', '抚州市', '上饶市', '济南市', '青岛市', '淄博市', '枣庄市', '东营市', '烟台市', '潍坊市', '济宁市', '泰安市', '威海市', '日照市', '莱芜市', '临沂市', '德州市', '聊城市', '滨州市', '菏泽市', '郑州市', '开封市', '洛阳市', '平顶山市', '安阳市', '鹤壁市', '新乡市', '焦作市', '济源市', '濮阳市', '许昌市', '漯河市', '三门峡市', '南阳市', '商丘市', '信阳市', '周口市', '驻马店市', '武汉市', '黄石市', '十堰市', '宜昌市', '襄阳市', '鄂州市', '荆门市', '孝感市', '荆州市', '黄冈市', '咸宁市', '随州市', '恩施土家族苗族自治州', '仙桃市', '潜江市', '天门市', '神农架林区', '长沙市', '株洲市', '湘潭市', '衡阳市', '邵阳市', '岳阳市', '常德市', '张家界市', '益阳市', '郴州市', '永州市', '怀化市', '娄底市', '湘西土家族苗族自治州', '广州市', '韶关市', '深圳市', '珠海市', '汕头市', '佛山市', '江门市', '湛江市', '茂名市', '肇庆市', '惠州市', '梅州市', '汕尾市', '河源市', '阳江市', '清远市', '东莞市', '中山市', '东沙群岛', '潮州市', '揭阳市', '云浮市', '南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市', '贺州市', '河池市', '来宾市', '崇左市', '海口市', '三亚市', '三沙市', '五指山市', '琼海市', '儋州市', '文昌市', '万宁市', '东方市', '定安县', '屯昌县', '澄迈县', '临高县', '白沙黎族自治县', '昌江黎族自治县', '乐东黎族自治县', '陵水黎族自治县', '保亭黎族苗族自治县', '琼中黎族苗族自治县', '重庆市', '成都市', '自贡市', '攀枝花市', '泸州市', '德阳市', '绵阳市', '广元市', '遂宁市', '内江市', '乐山市', '南充市', '眉山市', '宜宾市', '广安市', '达州市', '雅安市', '巴中市', '资阳市', '阿坝藏族羌族自治州', '甘孜藏族自治州', '凉山彝族自治州', '贵阳市', '六盘水市', '遵义市', '安顺市', '铜仁市', '黔西南布依族苗族自治州', '毕节市', '黔东南苗族侗族自治州', '黔南布依族苗族自治州', '昆明市', '曲靖市', '玉溪市', '保山市', '昭通市', '丽江市', '普洱市', '临沧市', '楚雄彝族自治州', '红河哈尼族彝族自治州', '文山壮族苗族自治州', '西双版纳傣族自治州', '大理白族自治州', '德宏傣族景颇族自治州', '怒江傈僳族自治州', '迪庆藏族自治州', '拉萨市', '昌都地区', '山南地区', '日喀则地区', '那曲地区', '阿里地区', '林芝市', '西安市', '铜川市', '宝鸡市', '咸阳市', '渭南市', '延安市', '汉中市', '榆林市', '安康市', '商洛市', '兰州市', '嘉峪关市', '金昌市', '白银市', '天水市', '武威市', '张掖市', '平凉市', '酒泉市', '庆阳市', '定西市', '陇南市', '临夏回族自治州', '甘南藏族自治州', '西宁市', '海东市', '海北藏族自治州', '黄南藏族自治州', '海南藏族自治州', '果洛藏族自治州', '玉树藏族自治州', '海西蒙古族藏族自治州', '银川市', '石嘴山市', '吴忠市', '固原市', '中卫市', '乌鲁木齐市', '克拉玛依市', '吐鲁番地区', '哈密地区', '昌吉回族自治州', '博尔塔拉蒙古自治州', '巴音郭楞蒙古自治州', '阿克苏地区', '克孜勒苏柯尔克孜自治州', '喀什地区', '和田地区', '伊犁哈萨克自治州', '塔城地区', '阿勒泰地区', '石河子市', '阿拉尔市', '图木舒克市', '五家渠市', '台北市', '高雄市', '台南市', '台中市', '金门县', '南投县', '基隆市', '新竹市', '嘉义市', '新北市', '宜兰县', '新竹县', '桃园县', '苗栗县', '彰化县', '嘉义县', '云林县', '屏东县', '台东县', '花莲县', '澎湖县', '连江县', '香港岛', '九龙', '新界', '澳门半岛', '离岛', '三河市', '乌兰浩特市', '清镇市', '赤水市', '仁怀市', '兴义市', '凯里市', '都匀市', '福泉市', '安宁市', '宣威市', '个旧市', '开远市', '蒙自市', '景洪市', '芒市', '香格里拉市', '兴平市', '华阴市', '诸城市', '湖北省直辖行政单位', '海南省直辖行政单位', '盘州市', '兴仁市', '北屯市', '胡杨河市', '可克达拉市', '昆玉市', '铁门关市', '新疆自治区省直辖行政单位']

2.开始实现python代码

在这里先允许我卖个关子,我的思路是先找出不同的元素,直接在原序列里面直接删除,这样剩下的就是两个文件不同的数据

data = open("1.txt", "r", encoding="utf-8").read()
data2 = open("2.txt", "r", encoding="utf-8").read()

list = data.strip().split('\n')
list2 = data2.strip().split('\n')

for item in list:
    for item2 in list2:
        if item == item2:
            print("比对市:"+item+" === "+item2)
            print("比对成功,移除元素:"+item2)
            list.remove(item)
            list2.remove(item2)

print(list)
print(list2)

问题出现,进行排查

但是事实总是残酷的,比对校验之后我发现数据并没有移除成功,如图:白山市出现了两个,上面的列表打印的是list的结果,下面打印的是list2的结果,可见并没有剔除重复的元素
在这里插入图片描述
经过一系列的尝试,最终发现问题出现在这里,我尝试在比对市里面看能不能找到白山市的比对记录,但是并没有发现,所以说明白山市并没有参与比对,也就是并没有参与item==item2这行逻辑,因此,我猜测,在进行比对成功之后直接在原列表中进行元素的删除操作,因为用的是for循环,所以在删除元素之后,元素后面的数据都向前移动一位,而元素原来的索引上面也已经被新的元素所覆盖,在进行新一个循环时,原来的元素索引会自动移到下一个索引,也就是后面覆盖原来索引位置的数据(白山市)并没有进行比对,python以为原来索引位置上的数据已经被比对过了,所以会自动走到下一个索引的位置
在这里插入图片描述
是这样吗??因此我进行了验证,下图是在控制台输出的内容
在这里插入图片描述
通化参与了比对,通化的下一个元素是白山,因此可以确定,通化比对删除之后,白山占据了通化索引的位置
在这里插入图片描述

最终结果

最终,正确的代码为:

data = open("1.txt", "r", encoding="utf-8").read()
data2 = open("2.txt", "r", encoding="utf-8").read()

list = data.strip().split('\n')
list2 = data2.strip().split('\n')

result = []
for item in list:
    for item2 in list2:
        if item == item2:
            print("比对市:"+item+" === "+item2)
            print("比对成功,添加到result::"+item2)
            result.append(item)
for item in result:
    print("移除元素:" + item)
    list.remove(item)
    list2.remove(item)
print("移除完成!剩下的元素为: ")
print(list)
print(list2)

将比对相同的元素先添加到新的序列,再将新的序列进行循环,在不对原序列进行操作的情况下进行删除,最终剩下的元素就是不同的元素。

如果有说的不对的,欢迎指正批评。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值