批处理之家's Archiver

949825667@qq.co 发表于 2016-8-30 10:51

【已解决】Python怎样在文本特定行前添加数字?

源文件:
a.
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx
b.
xxxxxxxxx
xxxxxxxxx
c.
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx
目标文件:
a.
1.xxxxxxxxx
2.xxxxxxxxx
3.xxxxxxxxx
b.
1.xxxxxxxxx
2.xxxxxxxxx
c.
1.xxxxxxxxx
2.xxxxxxxxx
3.xxxxxxxxx
4.xxxxxxxxx

949825667@qq.co 发表于 2016-8-30 10:51

想到脱发了!:'(

949825667@qq.co 发表于 2016-8-30 10:54

只能做到
1.xxx
2.xxx
3.xxx
这样不停加下去

GNU 发表于 2016-8-30 11:16

请把原始文件压缩一下传上来,代码能处理你自己编的数据不见得能处理你的原始文件。

949825667@qq.co 发表于 2016-8-30 11:18

源文件在附件里

949825667@qq.co 发表于 2016-8-30 11:19

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189688&ptid=41555]4#[/url] [i]GNU[/i] [/b]


    源文件上传了,大神给看看吧!实在不行给点建议也行!

happy886rr 发表于 2016-8-30 11:36

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189690&ptid=41555]6#[/url] [i]949825667@qq.co[/i] [/b]
你的源文件,到底要变成啥效果,表述不清晰,我不知道你的要求。

949825667@qq.co 发表于 2016-8-30 11:42

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189696&ptid=41555]8#[/url] [i]523066680[/i] [/b]


    你这么说话也是没谁了!不知道你怎么看出来我懒得!没天赋倒是真的!

949825667@qq.co 发表于 2016-8-30 11:44

终结这个问题吧!被版主说的不好意思问了!

523066680 发表于 2016-8-30 11:51

是不是这种结果?
[quote]be
n.
1.a light strong brittle grey toxic bivalent metallic element
v.
1.have the quality of being; (copula, used with an adjective or a predicate noun)
2.be identical to; be someone or something
3.occupy a certain position or area; be somewhere
4.have an existence, be extant
5.happen, occur, take place
6.be identical or equivalent to
7.form or compose
8.work in a specific place, with a specific subject, or in a specific function
9.represent, as of a character on stage
10.spend or use time
11.have life, be alive
12.to remain unmolested, undisturbed, or uninterrupted -- used only in infinitive form
13.be priced at[/quote]
都这个当老师了还这么小肚鸡肠,胸襟大一点好不好?别人说你几句能不能别太当回事?

949825667@qq.co 发表于 2016-8-30 11:52

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189700&ptid=41555]10#[/url] [i]523066680[/i] [/b]


    我没有啊,哪有小肚鸡肠- -!真无辜,能不能不要用你的位置或者心态来揣摩我的心态啊!我真没你想的那样!

949825667@qq.co 发表于 2016-8-30 11:53

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189700&ptid=41555]10#[/url] [i]523066680[/i] [/b]


    你的结果是对的

523066680 发表于 2016-8-30 11:56

[i=s] 本帖最后由 523066680 于 2016-8-30 11:59 编辑 [/i]

[font=consolas][size=15px][list=1][*]open [color=#007800]$SRC[/color],[color=#ff0000]"<:raw"[/color], [color=#ff0000]"be.txt"[/color] or die [color=#ff0000]"$!"[/color];
[*]open [color=#007800]$DST[/color],[color=#ff0000]">:raw"[/color], [color=#ff0000]"dst.txt"[/color];
[*]
[*]my [color=#007800]$n[/color] = [color=#000000]0[/color];
[*]my [color=#007800]$begin[/color] = [color=#000000]0[/color];
[*]
[*][color=#000000][b]for[/b][/color] my [color=#007800]$e[/color] [color=#7a0874][b]([/b][/color][color=#000000][b]<[/b][/color][color=#007800]$SRC[/color][color=#000000][b]>[/b][/color][color=#7a0874][b])[/b][/color]
[*][color=#7a0874][b]{[/b][/color]
[*]    [color=#007800]$n[/color]++ [color=#000000][b]if[/b][/color] [color=#7a0874][b]([/b][/color][color=#007800]$begin[/color] == [color=#000000]1[/color][color=#7a0874][b])[/b][/color];
[*]
[*]    [color=#000000][b]if[/b][/color] [color=#7a0874][b]([/b][/color][color=#007800]$e[/color]=~[color=#000000][b]/[/b][/color]\[color=#c20cb9][b]w[/b][/color]+\.[color=#000000][b]/[/b][/color][color=#7a0874][b])[/b][/color]
[*]    [color=#7a0874][b]{[/b][/color]
[*]        [color=#007800]$begin[/color] = [color=#000000]1[/color];
[*]        [color=#007800]$n[/color] = [color=#000000]0[/color];
[*]    [color=#7a0874][b]}[/b][/color]
[*]
[*]    [color=#000000][b]if[/b][/color] [color=#7a0874][b]([/b][/color][color=#007800]$n[/color] [color=#000000][b]>[/b][/color] [color=#000000]0[/color][color=#7a0874][b])[/b][/color]
[*]    [color=#7a0874][b]{[/b][/color]
[*]        print [color=#007800]$DST[/color] [color=#ff0000]"[color=#007800]${n}[/color]."[/color];
[*]    [color=#7a0874][b]}[/b][/color]
[*]
[*]    print [color=#007800]$DST[/color] [color=#007800]$e[/color];
[*][color=#7a0874][b]}[/b][/color]
[*]
[*]close [color=#007800]$SRC[/color];
[*]close [color=#007800]$DST[/color];
[/list][/size][/font]

Perl,
应该有人一两行命令可以解决。

happy886rr 发表于 2016-8-30 11:58

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189698&ptid=41555]9#[/url] [i]949825667@qq.co[/i] [/b]
你的规则是什么,是只要碰到有点号“.”,就开始标序号吗?

523066680 发表于 2016-8-30 12:00

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=189705&ptid=41555]14#[/url] [i]happy886rr[/i] [/b]


    他应该还是在折腾单词翻译的事情,词汇解释下分不同类型 v.  n. vt. ...  动词 名词
不同类型下有不同解释/造句/例子,给这些条目编号。

949825667@qq.co 发表于 2016-8-30 12:01

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189704&ptid=41555]13#[/url] [i]523066680[/i] [/b]


    看了两天Python就钻牛角尖一心想用Python解决问题!看来我还是太蠢了!写代码可能真的不适合我!

949825667@qq.co 发表于 2016-8-30 12:05

脑子转不了弯!give up!只为了好玩学学了!

523066680 发表于 2016-8-30 12:05

学而不思则罔,思而不学则"die"

英文:die,  通"殆"

949825667@qq.co 发表于 2016-8-30 12:07

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189710&ptid=41555]18#[/url] [i]523066680[/i] [/b]


    受教了!:) 人丑就该多读书!

wskwfkbdn 发表于 2016-8-30 13:35

生成一个文件,然后两个文件合并

949825667@qq.co 发表于 2016-8-31 10:49

[code]import re
f = open('be.txt','r')
n=0
num=0
for x in f.readlines():
    x = x.strip()
    if num == 1:
        n = n + 1
    if re.search(r'\w+\.',x):
        num=1
        n=0
    if n>0 :
        print(n,'.',x)
    else:
        print(x)[/code]抄袭版主的perl,不要打我!我就是试试!

happy886rr 发表于 2016-8-31 11:07

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189799&ptid=41555]21#[/url] [i]949825667@qq.co[/i] [/b]
并不是遇到点号就标序号,是遇到n.
pron. adj. num. adv. v. art. prep. conj. int. vt. vi.这些行首词性缩写的行之后,才开始标序号。

949825667@qq.co 发表于 2016-8-31 11:19

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189800&ptid=41555]22#[/url] [i]happy886rr[/i] [/b]


    是用正则匹配\w+\.了啊,这么匹配是有存在特例会出错么!感觉好像没问题啊!

happy886rr 发表于 2016-8-31 11:23

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189801&ptid=41555]23#[/url] [i]949825667@qq.co[/i] [/b]

你遇到缩写单词怎么办,比如NO. 就是number的缩写。

949825667@qq.co 发表于 2016-8-31 11:24

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189802&ptid=41555]24#[/url] [i]happy886rr[/i] [/b]


    多谢提醒,我再考虑考虑,不过我提取的单词里面没有这种缩略词!但是这种情况也要考虑在内!

happy886rr 发表于 2016-8-31 11:34

[i=s] 本帖最后由 happy886rr 于 2016-8-31 11:38 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189803&ptid=41555]25#[/url] [i]949825667@qq.co[/i] [/b]
Mr、Ms、Mrs后边都要加点,还有很多英文公司名、地名、城市名、机构名、要加点,很多专业术语的解释也要加点。万一遇到句号点你怎么办
你的脚本很粗糙

949825667@qq.co 发表于 2016-8-31 11:38

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189804&ptid=41555]26#[/url] [i]happy886rr[/i] [/b]


    因为要处理的文本已经是处理过的,不会存在句点。而且抓取的单词也是在我的列表里的,我事先可以筛选一下!但是我考虑事情还是不全面!学习了!

523066680 发表于 2016-8-31 11:51

[i=s] 本帖最后由 523066680 于 2016-8-31 12:00 编辑 [/i]

大致匹配就行了
从样本可见,一般这种“词类”的缩写都是独占一行
可以像这样限定[code]/^\w+\.\r?$/[/code]再严格一点的,它们应该都是小写[code]/^[a-z]+\.\r?$/[/code]

949825667@qq.co 发表于 2016-8-31 14:24

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189806&ptid=41555]28#[/url] [i]523066680[/i] [/b]


    多谢多谢,我刚刚睡觉去了!

happy886rr 发表于 2016-8-31 18:29

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=189821&ptid=41555]29#[/url] [i]949825667@qq.co[/i] [/b]
其实你可以直接正则搜索词性缩写pron. adj. num. adv. v. art. prep. conj. int. vt. vi.,并且只用一个变量n,不需要num[code]#Date:2016/8/31
import re
f=open('be.txt','r');n=-2
for x in f.readlines():
        x=x.strip()
        if re.search(r'(^n\.)|(^pron\.)|(^adj\.)|(^adv\.)|(^num\.)|(^art\.)|(^prep\.)|(^conj\.)|(^int\.)|(^v\.)|(^vt\.)|(^vi\.)',x):
                n=-1
        elif n==-2:
                print(x)
        if n==-1:
                print("\n[-{0}]".format(x))
                n+=1
        elif n >-1:
                n+=1
                print("   {0}.{1}".format(n,x))[/code]

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.