查看: 926|回复: 20
打印 上一主题 下一主题

[求助] 如何提取所有的词条项目到另一个TXT中?(更新了一个新问题)

[复制链接]

该用户从未签到

53

主题

474

回帖

2635

积分

解元

Rank: 5Rank: 5

积分
2635
跳转到指定楼层
1
发表于 2009-3-13 12:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原问题:在TXT文件中,怎样才能把所有的词条项目单独提取出来?

新问题:接着问个问题,在法语里面,有很多特殊,比如èéêë,我想把这些单词中的èéêë全部转换为e,请问怎么做?
比如,已知每个此条的首尾我都构造了3个#,即###。那么对于###élève###,我要转成eleve。
我自己想的办法是用正则表达式,把(?<=###.*)[èéê&euml;](?=.*###)替换为e。
在正则表达式的测试工具Regex Tester里面,这样替换可以得到正确答案(见下图),但是在Ultraedit的正则表达式里面,无论选择Perl、Unix还是Ultraedit,都无法得到正确结果,谁能指点一下?


[ 本帖最后由 zcm1019 于 2009-3-14 19:21 编辑 ]

该用户从未签到

57

主题

214

回帖

1307

积分

解元

Rank: 5Rank: 5

积分
1307

灌水大神章笑傲江湖章小蜜蜂章

QQ
2
发表于 2009-3-13 18:53:00 | 只看该作者
这个问题很雷人哈

该用户从未签到

45

主题

1420

回帖

1万

积分

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

积分
10971

管理组专用章

3
发表于 2009-3-13 21:06:52 | 只看该作者
Er...用UltraEdit里的正则表达式将正文部分全部替换成空的?

该用户从未签到

57

主题

214

回帖

1307

积分

解元

Rank: 5Rank: 5

积分
1307

灌水大神章笑傲江湖章小蜜蜂章

QQ
4
发表于 2009-3-13 21:16:18 | 只看该作者
也可以用EMEDITOR啊。
找规律,然后用正则表达式。
比如:
like<br>喜欢。I like...

替换<br>.*为空,勾选正则表达式选项即可。

该用户从未签到

53

主题

474

回帖

2635

积分

解元

Rank: 5Rank: 5

积分
2635
5
 楼主| 发表于 2009-3-14 00:11:03 | 只看该作者
谢谢,我试一试

该用户从未签到

131

主题

535

回帖

2826

积分

解元

Rank: 5Rank: 5

积分
2826

笑傲江湖章灌水大神章

6
发表于 2009-3-14 10:28:43 | 只看该作者
uedit,勾选正则表达式,advanced 选中List lines containing string,
查找</>^p*$,查找结果点一下clipbord即复制到剪贴板中了。
然后新建文本,粘贴,通过替换去除所有的</>^p (^p表换行符)即可。
对了,这个操作第一条词条应当丢了,补上第一条即可。

该用户从未签到

14

主题

112

回帖

1032

积分

解元

Rank: 5Rank: 5

积分
1032
7
发表于 2009-3-15 08:41:34 | 只看该作者
能不能èéê&euml;直接一个一个地换成e,这样也花多不了很多时间,而且也不需要在单词前后加###号标记了

该用户从未签到

53

主题

474

回帖

2635

积分

解元

Rank: 5Rank: 5

积分
2635
8
 楼主| 发表于 2009-3-15 09:32:50 | 只看该作者
关键是我不知道怎么定位到此条中的è字母,而非整个此条。

该用户从未签到

131

主题

535

回帖

2826

积分

解元

Rank: 5Rank: 5

积分
2826

笑傲江湖章灌水大神章

9
发表于 2009-3-15 11:27:46 | 只看该作者
èéê&euml;在除了词条的其它位置是否有出现,是否需要替换?

该用户从未签到

14

主题

112

回帖

1032

积分

解元

Rank: 5Rank: 5

积分
1032
10
发表于 2009-3-15 11:37:54 | 只看该作者
我想楼主的意思是只更换词条里面的èéê&euml;,解释里面的èéê&euml;就不换

该用户从未签到

131

主题

535

回帖

2826

积分

解元

Rank: 5Rank: 5

积分
2826

笑傲江湖章灌水大神章

11
发表于 2009-3-15 11:39:26 | 只看该作者
原帖由 cdyg 于 2009-3-15 11:27 发表
èéê&euml;在除了词条的其它位置是否有出现,是否需要替换?

FIND:###^(?++^)[èéê&euml;]^(?++^)###
REPLACE:###^1e^2###
执行次数:执行一至多次,直到找不到为止。

注意:之前要转换为unicode编码,否则可能会出错。

snap089.png (9.71 KB, 下载次数: 0)

snap089.png

该用户从未签到

131

主题

535

回帖

2826

积分

解元

Rank: 5Rank: 5

积分
2826

笑傲江湖章灌水大神章

12
发表于 2009-3-15 11:48:32 | 只看该作者
其实,如果辞典不是太复杂的话,可以用特殊符号如###作为词条与解释的分隔符,到excel中打开(选择以###为分隔),
然后你会发现词条标题都在单独一个列中,选中这一列,将èéê&euml;给依次替换为e即可。

该用户从未签到

53

主题

474

回帖

2635

积分

解元

Rank: 5Rank: 5

积分
2635
13
 楼主| 发表于 2009-3-15 13:25:36 | 只看该作者
啊,谢谢啊,就是只替换词条里面的,正文里面的不替换。

该用户从未签到

53

主题

474

回帖

2635

积分

解元

Rank: 5Rank: 5

积分
2635
14
 楼主| 发表于 2009-3-15 14:08:06 | 只看该作者
竟然有些字符论坛显示不出来,我发图片算了:


[ 本帖最后由 zcm1019 于 2009-3-15 14:13 编辑 ]

该用户从未签到

53

主题

474

回帖

2635

积分

解元

Rank: 5Rank: 5

积分
2635
15
 楼主| 发表于 2009-3-15 15:19:34 | 只看该作者
哦,解决了,在Perl引擎下,把^(?++^)改成(.*)就可以了。

该用户从未签到

131

主题

535

回帖

2826

积分

解元

Rank: 5Rank: 5

积分
2826

笑傲江湖章灌水大神章

16
发表于 2009-3-15 17:30:26 | 只看该作者
多了一个"|"符号,当然不能匹配.

该用户从未签到

53

主题

474

回帖

2635

积分

解元

Rank: 5Rank: 5

积分
2635
17
 楼主| 发表于 2009-3-15 17:33:58 | 只看该作者
那个|是用QQ截图时候造成的,本身没有|的。

该用户从未签到

131

主题

535

回帖

2826

积分

解元

Rank: 5Rank: 5

积分
2826

笑傲江湖章灌水大神章

18
发表于 2009-3-15 17:49:19 | 只看该作者
解决了就好,因为uedit的引擎是贪婪模式的,如果有空格就不被匹配进去。
用per引擎是个好办法。

该用户从未签到

53

主题

474

回帖

2635

积分

解元

Rank: 5Rank: 5

积分
2635
19
 楼主| 发表于 2009-3-15 17:50:37 | 只看该作者
当用ULTRAEDIT的引擎时,无法匹配到本应在第7行的###[&Ecirc;tre] sujet à###,而是匹配到了第31行的###a cappella (difficultés)###,如下图:

当使用Perl引擎时,正确匹配到了第7行:


注:我都是从文件开头开始搜索的。

该用户从未签到

53

主题

474

回帖

2635

积分

解元

Rank: 5Rank: 5

积分
2635
20
 楼主| 发表于 2009-3-15 17:51:27 | 只看该作者

回复 18楼 cdyg 的帖子

感谢!我马上把刚刚转换的这个辞典上传。

该用户从未签到

131

主题

535

回帖

2826

积分

解元

Rank: 5Rank: 5

积分
2826

笑傲江湖章灌水大神章

21
发表于 2009-3-15 18:19:31 | 只看该作者
用peal要结合边界规则,不然替换时不方便。

如果用ue引擎的正则表达式,可以再简化写成:
查找:###^(?++^)[èéê&euml;……]
替换:###^1e
就能匹配上了。

[ 本帖最后由 cdyg 于 2009-3-15 18:21 编辑 ]