免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2880 | 回复: 7
打印 上一主题 下一主题

如何删除文本的前10列 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-14 22:11 |只看该作者 |倒序浏览
请教,如何用python把文本的前10列删除掉,一个字符就是一列的意思。
或者换一种说法,删除每一行的前10个字符。

论坛徽章:
0
2 [报告]
发表于 2012-01-14 22:53 |只看该作者
打开文件,移到10,创建临时文件,边读边写,写完删除原文件,把临时文件重命名成原文件名

论坛徽章:
0
3 [报告]
发表于 2012-01-14 23:23 |只看该作者
经过摸索,自己搞定了,代码如下:
import re
fdr = open("before.txt", "r")
fdw = open("after.txt", "w")
fdstr = re.compile("^.{10}")
lines=fdr.readlines()
for line in lines:
    line=re.sub(fdstr, "", line)
    fdw.writelines(line)
fdr.close()
fdw.close()
好歹是实现功能了,至于性能什么的就不清楚了,呵呵。

论坛徽章:
0
4 [报告]
发表于 2012-01-14 23:38 |只看该作者
本帖最后由 luoyan_xy 于 2012-01-15 10:09 编辑
  1. fp = open('./data','r')
  2. fp2 = open('./temp','w')
  3. for line in fp:
  4.     s = ' '.join(line.split()[10:]) + '\n'
  5.     fp2.write(s)
复制代码
文件的话,可以通过删除原来的,并改名。
效果的话不知道这样能不能给满足你的需求,主要问题就是可能会改变单词之间的空格
初学python,暂时是这样想的 :wink:


貌似我理解错了,我当成删除前10个单词了,如果是删除前10个字符的话,这个方法好像就不行了。。。

论坛徽章:
0
5 [报告]
发表于 2012-01-14 23:49 |只看该作者
luoyan_xy 发表于 2012-01-14 23:38
文件的话,可以通过删除原来的,并改名。
效果的话不知道这样能不能给满足你的需求,主要问题就是可能会改 ...

谢谢楼上两位的讨论。
嗯,你这种方法不错,比较简洁。

论坛徽章:
0
6 [报告]
发表于 2012-01-15 01:44 |只看该作者
python文本操作还是很不错的

论坛徽章:
0
7 [报告]
发表于 2012-01-15 08:47 |只看该作者
本帖最后由 inpool 于 2012-01-15 08:55 编辑
  1. result = [line[10:] for line in open(r'file.txt')]
  2. open(r'file.txt', 'w').writelines(result)
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-01-15 19:40 |只看该作者
inpool 发表于 2012-01-15 08:47
你这种方法更强大,好简洁啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP