免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3083 | 回复: 7
打印 上一主题 下一主题

limodou大侠请进 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-22 15:20 |只看该作者 |倒序浏览
上次问过您的那个字符串问题,见到真实资料了,发现情况没有我问您那么简单,所以我决定从html处理,中间有个问题还得麻烦您:
原文件:

  1. <p>【哀荣】<span lang=EN-US> āiróng 〈书 <i>fml.</i>〉指死后的荣誉posthumous honour</span></p>
  2. <p>【哀求】<span lang=EN-US> āiqiú 哀告请求entreat; implore:~饶命plead for mercy|苦苦~implore piteously</span></p>
  3. <p>【挨边】<span lang=EN-US> āi∥biān (~儿 āi∥biānr) <ultr>a34d</ultr> 靠着边缘keep close to the edge:上了大路,要挨着边儿走。Keep close to the side when walking on the road. <ultr>a34e</ultr> 接近(某数,多指年龄) be near; be close to (a figure, usu. age):我六十~儿了。I'm getting on sixty. <ultr>a34f</ultr> 接近事实或事物应有的样子be close to the truth of sth.; be relevant:你说的一点也不~儿! What you have said is totally irrelevant.</span></p>
复制代码

     上次您写的那个程序,处理拼音是把所有汉语拼音写在一个列表,可真实的情况是:文件的汉语拼音并不标准,里面夹杂着英文字母,所以这个方法似乎不行,拼音开始已基本确定,我想从拼音结束的位置找规律,大致就上面几种情况,要么是' 〈'或者括号等,要么就是汉字,但是我不知道怎么去区分汉字,因为其中的汉语拼音也有双字节的。不知道有什么办法没有,谢谢了!

论坛徽章:
0
2 [报告]
发表于 2006-03-22 15:28 |只看该作者
我觉得你所说的情况很复杂,这其实与python无关,而是一个算法的问题。比如你举的第三个例子:


  1. <p>【挨边】<span lang=EN-US> āi∥biān (~儿 āi∥biānr) <ultr>a34d</ultr>
复制代码


拼音后面还有拼音,这怎么区分。我想首先要确定算法,把所有的情况都考虑到。然后才能去写程序。

论坛徽章:
0
3 [报告]
发表于 2006-03-23 10:44 |只看该作者
我对limodou提另一个问题.
看了你的《[Python学习]使用minidom来处理XML的示例(二)--XML的写入》后,有一处不明白。


  1. 1       >>> import xml.dom.minidom
  2. 2       >>> impl = xml.dom.minidom.getDOMImplementation()
  3. 3       >>> dom = impl.createDocument(None, 'catalog', None)
  4. 4       >>> root = dom.documentElement
  5. 5       >>> text = unicode('汉字示例', 'cp936')
  6. 6       >>> item = makeEasyTag(dom, 'item', text)
  7. 7       >>> root.appendChild(item)
  8. 8       <DOM Element: item at 0xb9ceb8>
  9. 9       >>> root.toxml()
  10. 10      u'<catalog><item>\u6c49\u5b57\u793a\u4f8b</item></catalog>'
  11. 11      >>> f=file('d:/test.xml', 'w')
  12. 12      >>> import codecs
  13. 13      >>> writer = codecs.lookup('utf-8')[3](f)
  14. 14      >>> dom.writexml(writer, encoding='utf-8')
  15. 15      >>> writer.close()
复制代码

请问这颗XML在写入文件后,是否一直存在内存里?如果是,如何从内存清除掉?

论坛徽章:
0
4 [报告]
发表于 2006-03-23 11:17 |只看该作者
不用的对象可以使用 v=None 或 del 来去掉它的引用计数。python会自动回收。一般小程序结束后自动就回收了,可以不用管它。

论坛徽章:
0
5 [报告]
发表于 2006-03-24 16:49 |只看该作者
limodou大侠:前面的数据我已基本格式化了,现在有个问题:

  1. 1.用电报陈述(事由) state via telegraph:谈判一有结果,迅即~。Report the result of the negotiation via telegraph as soon as it's out.
  2. 2〈方 <i>dial.</i>〉汽艇motorboat
  3. 3.(~儿diàndēnɡpàor)白炽电灯上用的发光器件,一般呈梨形electric (light) bulb, usu. shaped like a pear;
复制代码

现在我想在里面的英文加上标记:

  1. 1.用电报陈述(事由) <eng>state via telegraph</eng>:谈判一有结果,迅即~。Report the result of the negotiation via telegraph as soon as it's out.
  2. 2〈方 <i>dial.</i>〉汽艇<eng>motorboat</eng>
  3. 3.(~儿diàndēnɡpàor)白炽电灯上用的发光器件,一般呈梨形<eng>electric (light) bulb, usu. shaped like a pear;</eng>
复制代码

但其中()、〈〉、<>里面的英文不要加,该怎么做比较好?谢谢!

[ 本帖最后由 tikico 于 2006-3-24 16:50 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-03-24 19:22 |只看该作者
因为(),<>都是成对出现,因此可以象处理[]一样,读到一个(,<就一直读,直到遇到),>结束即可。

论坛徽章:
0
7 [报告]
发表于 2006-03-27 16:31 |只看该作者
原帖由 limodou 于 2006-3-24 19:22 发表
因为(),<>都是成对出现,因此可以象处理[]一样,读到一个(,<就一直读,直到遇到),>结束即可。

有个全角的〈〉也是特殊情况,于是我这样做的:

  1.           #全角的〈是双字节的,第一个字节是161,第二个是180
  2.             if ord(temp[m])==161 and ord(temp[m+1])== 180 and lw4_flag == 0:
  3.                 lw4_flag = 1
  4.                 buf.append('〈')  # 或者buf.append(temp[m:m+1])结果一样
  5.                 m += 2
复制代码

可结果出现了乱码,由于不是用Unicode,所以只能这样子。
原文这样子:

  1. ān 〈书 <i>fml.</i>〉〈疑问代词 <i>interrog.pron.</i>〉
复制代码

执行后变成了

  1. ān </py><chi>词?<i>fml.</i>〉銆堃晌蚀??<i>interrog.pron.</i>銆?
复制代码

应该是字节错位了,但是是哪里呢?

论坛徽章:
0
8 [报告]
发表于 2006-03-27 20:28 |只看该作者
看不了什么问题,加些调试信息看一看吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP