Board logo

标题: [问题求助] 【已解决】Python怎样在文本特定行前添加数字? [打印本页]

作者: 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

回复 4# GNU


    源文件上传了,大神给看看吧!实在不行给点建议也行!
作者: happy886rr    时间: 2016-8-30 11:36

回复 6# 949825667@qq.co
你的源文件,到底要变成啥效果,表述不清晰,我不知道你的要求。
作者: 949825667@qq.co    时间: 2016-8-30 11:42

回复 8# 523066680


    你这么说话也是没谁了!不知道你怎么看出来我懒得!没天赋倒是真的!
作者: 949825667@qq.co    时间: 2016-8-30 11:44

终结这个问题吧!被版主说的不好意思问了!
作者: 523066680    时间: 2016-8-30 11:51

是不是这种结果?
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

都这个当老师了还这么小肚鸡肠,胸襟大一点好不好?别人说你几句能不能别太当回事?
作者: 949825667@qq.co    时间: 2016-8-30 11:52

回复 10# 523066680


    我没有啊,哪有小肚鸡肠- -!真无辜,能不能不要用你的位置或者心态来揣摩我的心态啊!我真没你想的那样!
作者: 949825667@qq.co    时间: 2016-8-30 11:53

回复 10# 523066680


    你的结果是对的
作者: 523066680    时间: 2016-8-30 11:56

本帖最后由 523066680 于 2016-8-30 11:59 编辑



Perl,
应该有人一两行命令可以解决。
作者: happy886rr    时间: 2016-8-30 11:58

回复 9# 949825667@qq.co
你的规则是什么,是只要碰到有点号“.”,就开始标序号吗?
作者: 523066680    时间: 2016-8-30 12:00

回复 14# happy886rr


    他应该还是在折腾单词翻译的事情,词汇解释下分不同类型 v.  n. vt. ...  动词 名词
不同类型下有不同解释/造句/例子,给这些条目编号。
作者: 949825667@qq.co    时间: 2016-8-30 12:01

回复 13# 523066680


    看了两天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

回复 18# 523066680


    受教了! 人丑就该多读书!
作者: wskwfkbdn    时间: 2016-8-30 13:35

生成一个文件,然后两个文件合并
作者: 949825667@qq.co    时间: 2016-8-31 10:49

  1. import re
  2. f = open('be.txt','r')
  3. n=0
  4. num=0
  5. for x in f.readlines():
  6.     x = x.strip()
  7.     if num == 1:
  8.         n = n + 1
  9.     if re.search(r'\w+\.',x):
  10.         num=1
  11.         n=0
  12.     if n>0 :
  13.         print(n,'.',x)
  14.     else:
  15.         print(x)
复制代码
抄袭版主的perl,不要打我!我就是试试!
作者: happy886rr    时间: 2016-8-31 11:07

回复 21# 949825667@qq.co
并不是遇到点号就标序号,是遇到n.
pron. adj. num. adv. v. art. prep. conj. int. vt. vi.这些行首词性缩写的行之后,才开始标序号。
作者: 949825667@qq.co    时间: 2016-8-31 11:19

回复 22# happy886rr


    是用正则匹配\w+\.了啊,这么匹配是有存在特例会出错么!感觉好像没问题啊!
作者: happy886rr    时间: 2016-8-31 11:23

回复 23# 949825667@qq.co

你遇到缩写单词怎么办,比如NO. 就是number的缩写。
作者: 949825667@qq.co    时间: 2016-8-31 11:24

回复 24# happy886rr


    多谢提醒,我再考虑考虑,不过我提取的单词里面没有这种缩略词!但是这种情况也要考虑在内!
作者: happy886rr    时间: 2016-8-31 11:34

本帖最后由 happy886rr 于 2016-8-31 11:38 编辑

回复 25# 949825667@qq.co
Mr、Ms、Mrs后边都要加点,还有很多英文公司名、地名、城市名、机构名、要加点,很多专业术语的解释也要加点。万一遇到句号点你怎么办
你的脚本很粗糙
作者: 949825667@qq.co    时间: 2016-8-31 11:38

回复 26# happy886rr


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

本帖最后由 523066680 于 2016-8-31 12:00 编辑

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

作者: 949825667@qq.co    时间: 2016-8-31 14:24

回复 28# 523066680


    多谢多谢,我刚刚睡觉去了!
作者: happy886rr    时间: 2016-8-31 18:29

回复 29# 949825667@qq.co
其实你可以直接正则搜索词性缩写pron. adj. num. adv. v. art. prep. conj. int. vt. vi.,并且只用一个变量n,不需要num
  1. #Date:2016/8/31
  2. import re
  3. f=open('be.txt','r');n=-2
  4. for x in f.readlines():
  5. x=x.strip()
  6. if re.search(r'(^n\.)|(^pron\.)|(^adj\.)|(^adv\.)|(^num\.)|(^art\.)|(^prep\.)|(^conj\.)|(^int\.)|(^v\.)|(^vt\.)|(^vi\.)',x):
  7. n=-1
  8. elif n==-2:
  9. print(x)
  10. if n==-1:
  11. print("\n[-{0}]".format(x))
  12. n+=1
  13. elif n >-1:
  14. n+=1
  15. print("   {0}.{1}".format(n,x))
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2