免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: JCP
打印 上一主题 下一主题

请问:使用python如何轻松实现替换多个文件中的字串 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-11-23 09:12 |只看该作者
原帖由 limodou 于 2006-11-23 09:00 发表
你相查那个没有?python一样有强大的正则表达,文本处理也非常简洁。就是使用perl对于多行的处理,算法应该没有什么区别,只是语言上的差别而已。


就是能够方便处理我说的那些方面的要求的方法。

;)

论坛徽章:
0
12 [报告]
发表于 2006-11-23 10:05 |只看该作者
import re
也能实现的

论坛徽章:
0
13 [报告]
发表于 2006-11-23 10:33 |只看该作者
re 只是说字符串和正规表达式的

不涉及到文件那一层吧

论坛徽章:
0
14 [报告]
发表于 2006-11-23 11:56 |只看该作者
文件你想如何处理?readline(), readlines()还可以使用linecache模块。

论坛徽章:
0
15 [报告]
发表于 2006-11-23 13:21 |只看该作者
我就是想让文件跟正规表达式结合比较好的处理方法~~
:)

论坛徽章:
0
16 [报告]
发表于 2006-11-23 14:19 |只看该作者
还是没说清楚啊。所以我说你想得过于复杂了。

论坛徽章:
0
17 [报告]
发表于 2006-11-23 15:02 |只看该作者
原帖由 limodou 于 2006-11-23 14:19 发表
还是没说清楚啊。所以我说你想得过于复杂了。


我的意思是说:

就是扫描文件中的内容,然后将匹配正则表达式的字符串,替换成目的字符串。

这是一个方面

另一个方面,就是扫描给定的目录,然后将该目录下的(包括子目录,以及子目录的子目录。。。。)的匹配正则表达式的文件名替换成目的文件名。

这次应该说清楚了吧,呵呵

;)

我不着急用,因为我已经写好了两个shell脚本完成这个事情,我只是想知道python下如何实现

呵呵

论坛徽章:
0
18 [报告]
发表于 2006-11-23 21:45 |只看该作者
第一个问题,如果不考虑文本大小,很简单,一次把内容读进来,使用正则替换来处理然后写回文件即可。

对于第二个问题。python有os.walk(), 或os.path.walk()来扫描目录,然后对文件名进行改名即可。

而我估计你的两个shell的脚本也不一定考虑了大文件的情况。

就象我说的处理就行了,没有什么复杂的。

不过你自已看一看前后的发言:

标题是:

使用python如何轻松实现替换多个文件中的字串


给人的理解是一次要处理多个文件,这应该是一个工作.
但到了后面一点点说来说去,才变成了是两个问题。刚开始也没有提是正则式,所以我说你的问题描述不清。挺简单的事却说了这么长。而且我看不出文件名批量替换与文件内容之间有什么关系?如果你说有关系,这将又是一个没有说清楚的地方。

[ 本帖最后由 limodou 于 2006-11-23 21:49 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2006-11-24 08:47 |只看该作者
1 那个shell中,我是sed来实现的,并不是采用类似于从文件中读出,然后替换,然后写入的方法。好像不需要考虑文件的大小。

2  关于正则表达式,可能是一说替换字符串,我自己就潜意识中把它当成正则表达式替换,不好意思,所以刚开始忘了说。

3  本来我的确想问的是第一个问题,我查资料方面也是关于第一个问题的,后来又想到第二个问题,所以就一起放进去。sorry

4 文件名批量替换与文件内容的关系?这句我不懂。


  1. 对于第二个问题。python有os.walk(), 或os.path.walk()来扫描目录,然后对文件名进行改名即可。
复制代码

谢谢您的回答

论坛徽章:
0
20 [报告]
发表于 2006-11-24 08:53 |只看该作者
使用sed只是你使用了现成的工具,并不能说明什么。因为你并不知道它的工作方式。我想一般情况下都不太考虑文件的大小,sed也很有可能,不过具体它如何做的,我没有读过源码也不清楚。只能说,你把文件大小的考虑交给sed来处理了,而它是否可以,你已经不关心了。

没有给出具体的代码,因为我认为这是一个熟悉python的好机会。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP