求助:如何给文本加序号

求助:如何给文本加序号

在论坛里求助了几次,大家都很热情。只是我的学习进度很慢,工作需要,又得求助大家了:


一个客户信息的文本文件,每个客户以等号行 (=============这个样子的64个“=”分割)

请教:如何把”===========“替换成"==== 序号 ====="

谢谢。

序号是指从1开始的数列吧?
序号左右两边各32个等号?
序号是记录号吗,加了之后要求留多少个等号?


QUOTE:
原帖由 jjj137 于 2008-8-26 14:48 发表
序号是指从1开始的数列吧?
序号左右两边各32个等号?

对。序号从1开始,两面个32个等号。最好序号左右各有一个空格,这样可读性好一些。

非常感谢。


[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/env python


s, r, w = '='*32, file('data'), file('newdata','w')
ss=s+' %d '+s+'\n'
s=s+s

j=1

for i in r:
    if s in i:
        w.write(ss %  j)
        j+=1
    else:
        w.write(i)

将就用吧。


QUOTE:
原帖由 retuor 于 2008-8-26 15:09 发表

#!/usr/bin/env python


s, r, w = '='*32, file('data'), file('newdata','w')
ss=s+' %d '+s+'\n'
s=s+s

j=1

for i in r:
    if s in i:
        w.write(ss %  j)
        j+=1
    else ...

多谢!顺利完成添加序号操作。

看起来Python可以帮助我们完成很多任务,很实用。要赶紧学习Python。
改一改,效率高一点点:

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/env python


s, r, w = '='*32, file('data'), file('newdata','w')
ss=s+' %d '+s+'\n'
s=s+s

j=1

for i in r:
    if s==i[0:64]:
        w.write(ss %  j)
        j+=1
    else:
        w.write(i)

python 是好东西。


QUOTE:
原帖由 retuor 于 2008-8-26 15:21 发表
改一改,效率高一点点:


#!/usr/bin/env python


s, r, w = '='*32, file('data'), file('newdata','w')
ss=s+' %d '+s+'\n'
s=s+s

j=1

for i in r:
    if s==i[0:64]:
        w.write(ss ...

这个也好用。资料条数越多提高效率应该越明显。


楼上辛苦了! Thanks!


QUOTE:
原帖由 retuor 于 2008-8-26 15:21 发表
改一改,效率高一点点:


#!/usr/bin/env python


s, r, w = '='*32, file('data'), file('newdata','w')
ss=s+' %d '+s+'\n'
s=s+s

j=1

for i in r:
    if s==i[0:64]:
        w.write(ss ...

这个效率更高么?我还以为产生一个新列表比查找时间长……


QUOTE:
原帖由 jjj137 于 2008-8-26 15:35 发表

这个效率更高么?我还以为产生一个新列表比查找时间长……

你说得对。这样做很可能更慢了。特别是在其它行都不长时。

也许我们不用跟 64 这么长的段进行比较,只要判断前 4 到 5 个是否等号就行。这要看楼主的文件结构。