鱼C论坛

 找回密码
 立即注册
查看: 601|回复: 13

求助下我想根据手机前7位统计下手机归属数量,为什么count一直是0呢

[复制链接]
发表于 2020-4-10 14:58:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
file_1=open("E:\\mv\\python试用\\手机号码1.txt")
file_2=open("E:\\mv\\python试用\\gs.txt")
file_3 = open("E:\\mv\\python试用\\前7位.txt", "r+")
count=0
for each_line in file_1:
    file_3.writelines(each_line[0:7])
    file_3.writelines("\n")
file_1.close()
for each_line_1 in file_3:#比较file_3中的每一行是不是已经在file_2里面存在了?这个对吗
    for each_line_2 in file_2:
        if each_line_1 == each_line_2:
            count += 1
            break

file_2.close()
file_3.close()

print(count)

#file_1是所有需要确认归属的手机号码
#file_2是根据前7位号码已知的归属文件
#file_3是我把file_1前7位提取出来了
#问题是为什么count一直等于0 呢???
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-10 15:13:16 | 显示全部楼层
BngThea 发表于 2020-4-10 15:10
为什么用writelines,看你的代码,直接用write吧

改完了,可是count还是0 啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 15:32:46 | 显示全部楼层
sunrise085 发表于 2020-4-10 15:24
因为file_3文件写完之后直接读是读不到任何东西的,因为此时文件光标在文件末尾
有两种方式
第一种,写完 ...

非常感谢大佬的细心讲解,我已经将程序修改了在创建完file_3后,将指针指向开始位置,但是运行完了count还是0?您帮我看下我修改对吗,我是正确理解你的意思了吗
file_1=open("E:\\绝地求生\\python试用\\绝地求生手机号码1.txt")
file_2=open("E:\\绝地求生\\python试用\\长春.txt")
file_3 = open("E:\\绝地求生\\python试用\\绝地求生前7位.txt", "r+")
count=0
for each_line in file_1:
    file_3.write(each_line[0:7])
    file_3.write("\n")
file_1.close()
file_3.seek(0,0)
for each_1 in file_3:
    for each_2 in file_2:
        if each_1 == each_2:
            count += 1
            break

file_2.close()
file_3.close()

print(count)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 15:59:07 | 显示全部楼层
sunrise085 发表于 2020-4-10 15:42
你有没有打开文件去看一下呢?运行完程序后,file_3应该是你从file_1中取出来的各行的前七位,你看看对不 ...

E:\绝地求生\python试用\捕获.PNG
E:\绝地求生\python试用\捕获2.PNG
我是win10系统,然后file_3的内容可以正常前7位进行分割,file_1是我在ecxel表格中站出来的也可以正常显示,然后我将程序部分改成你说的那样
for each_line in file_1:
    file_3.write(each_line[0:7]+os.linesep)
求大佬帮忙看看是不是这个意思,运行结果还是0

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 08:16:09 | 显示全部楼层
zltzlt 发表于 2020-4-10 17:40
不建议边读边写,这样试试:

还是不行呢,是文件3的每一行要与文件2的每一行做比较,如果存在了count+1,然后比较结束
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 08:17:36 | 显示全部楼层
zltzlt 发表于 2020-4-10 17:40
不建议边读边写,这样试试:

而且文件3中确实在文件2中能找到,但是的文件2是在Excel里面粘到TXT文档中的,我怀疑他们俩肯定是有格式上的差别,但是用眼睛看也看不出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-13 08:50:44 | 显示全部楼层
zltzlt 发表于 2020-4-10 17:40
不建议边读边写,这样试试:

file_1=open("E:\\绝地求生\\python试用\\绝地求生手机号码1.txt")
file_2=open("E:\\绝地求生\\python试用\\长春.txt")
file_3 = open("E:\\绝地求生\\python试用\\绝地求生前7位.txt", "a")
count=0
import os
for each_line in file_1:
    file_3.write(each_line[0:7])
    file_3.write("\n")
file_1.close()
file_3 = open("E:\\绝地求生\\python试用\\绝地求生前7位.txt")
r3=list(file_3)
r2=list(file_2)
for each_1 in r3:
    for each_2 in r2:
        if each_1==each_2:
            count += 1
            break

file_2.close()
file_3.close()

print(count)
#结合你说的,我改成list居然可以运行出来,但是file模式下还是0,不知道为什么
F:\Anaconda\python.exe F:/小甲鱼0基础python入门/第30讲文件系统:介绍一个高大上的东西/iphonenumber.py
3263

Process finished with exit code 0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-3 15:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表