鱼C论坛

 找回密码
 立即注册
查看: 2531|回复: 4

[已解决]python菜鸟 写了几行命令 求助输出的问题

[复制链接]
发表于 2017-1-13 11:04:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 allenyang 于 2017-1-13 11:16 编辑

纯菜鸟学了几个星期的python
查了好几天的资料
写了个四不像的东西
大家帮忙看看怎么改进达到目的

import collections
from collections import Counter
lines = open('ID1.txt','r').readlines()
out = open('ID2.txt','w')
counts = Counter(lines)
for s,num in counts.items():
    if num > 1:
        for suffix in range(1, num + 1):
            lines[lines.index(s)] = s + '-' + str(suffix)
out.write(str(lines))
print(lines)

我的目标是把 'ID1.TXT' 文档中重复的数据重新命名然后输出到 ‘ID2.TXT’,如下
001
001
002
002
输出为:
001-1
001-2
002-1
002-2

但是这个给我的输出是
['001\n-1', '001\n-2', '002\n-1', '002\n-2']

lines[lines.index(s)]这里应该就不对了,但是实在不知道怎么改了
求大牛们指教一下,不胜感激
最佳答案
2017-1-19 21:19:33
  1. import collections
  2. from collections import Counter
  3. L = open('ID1.txt','r').readlines()
  4. lines = []
  5. for x in L:
  6.     lines.append(x.strip())
  7. #out = open('ID2.txt','a')
  8. counts = Counter(lines)
  9. for s,num in counts.items():
  10.     if num > 1:
  11.         for suffix in range(1, num + 1):
  12.             lines[lines.index(s)] = s + '-' + str(suffix)
  13. #out.write(str(lines))
  14. print(lines)
  15. for y in lines:
  16.     with open('ID2.txt','a') as f:
  17.         f.write(y+'\n')
  18.    
复制代码



看看我帮你改的,仔细比对我改动的地方,你看懂了我改的就知道出错在哪里了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-19 21:19:33 | 显示全部楼层    本楼为最佳答案   
  1. import collections
  2. from collections import Counter
  3. L = open('ID1.txt','r').readlines()
  4. lines = []
  5. for x in L:
  6.     lines.append(x.strip())
  7. #out = open('ID2.txt','a')
  8. counts = Counter(lines)
  9. for s,num in counts.items():
  10.     if num > 1:
  11.         for suffix in range(1, num + 1):
  12.             lines[lines.index(s)] = s + '-' + str(suffix)
  13. #out.write(str(lines))
  14. print(lines)
  15. for y in lines:
  16.     with open('ID2.txt','a') as f:
  17.         f.write(y+'\n')
  18.    
复制代码



看看我帮你改的,仔细比对我改动的地方,你看懂了我改的就知道出错在哪里了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-22 06:10:37 | 显示全部楼层
gopythoner 发表于 2017-1-19 21:19
看看我帮你改的,仔细比对我改动的地方,你看懂了我改的就知道出错在哪里了

万分感谢,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-22 09:19:11 | 显示全部楼层

不知道你看懂了你的错误在哪里没有
我跟你说一下吧,你读取的ID1的文件内容是带有换行符的,也就是\n,所以在你后面的复制中会附带上,
而我其实就是在你的基础上用str.strip()去掉了前后空格
还有按照你写的写入方式是没法得到ID2的,所以我改成了一个for循环使用追加的形式得到ID2,但是这个因为是追加写入,所以每次运行都会重复写一次,当然可以改成每次运行把之前的内容覆盖后追加,你自己改去吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-26 03:29:30 | 显示全部楼层
gopythoner 发表于 2017-1-22 09:19
不知道你看懂了你的错误在哪里没有
我跟你说一下吧,你读取的ID1的文件内容是带有换行符的,也就是\n, ...

非常感谢详细的说明,我会再去学习进一步修改
运行的时候,有些问题我倒是能看出来或者发现,
苦于新手,不知道怎么下手解决,
即使google 百度了,发现自己也很难解决

本来想着学完视频就能对python入门
我还是 too young , too naive
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-17 02:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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