在Python中,我想在此HTML代码中仅显示老挝角色(仅在“textarea”标签中):
<font color="Red">ພິມຄໍາສັບລາວ ຫຼື ອັງກິດແລ້ວກົດປຸ່ມຄົ້ນຫາ - Enter English or Lao Then Hit Search</font><br />
<center><table id='display' border='0' width='100%'>
<tr>
<td id='lao2' colspan='3' style='height: 18px; text-align: left'>
<span style='color: #660033'><span style='font-size: 12pt'> </span></span>
</td>
</tr>
<tr>
<td style='width: 120px'> </td>
<td style='width: 192px'>
<textarea ID='lao' Font-Name='Phetsarath OT' Font-Size='12' rows='10' cols='84' readonly='readonly'>
1. (loved, loving)
1. ຮັກ
2. ມັກຫຼາຍ
3. would love ຢາກໄດ້ຫຼາຍ, ຢາກເຮັດຫຼາຍ
ປະເພດ: ຄໍາກໍາມະ
ການອອກສຽງ: ເລັຟ
2.
1. ຄວາມຮັກ
2. ຄົນຮັກ, ຄູ່ຮັກ, ສິ່ງທີ່ເຈົ້າຮັກ
3. ທີ່ຮັກ, (ເທັນນິດ) ສູນ
be in love with ຮັກຜູ້ໃດຜູ້ໜຶ່ງ
make love ຮ່ວມປະເວນີ
ປະເພດ: ຄຳນາມ
ການອອກສຽງ: ເລັຟ
</textarea>
</td>
<td style='width: 284px'> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td id='lao1' align='center'>ກະຊວງ ໄປສະນີ, ໂທລະຄົມມະນາຄົມ ແລະ ການສື່ສານ</td><td> </td>
</tr>
<tr>
<td> </td>
<td id='lao1' align='center'>ສູນບໍລິຫາລັດດ້ວຍເອເລັກໂຕຣນິກ</td><td> </td>
</tr>
</table></center><br />
我只想要“textarea”中的值。我该怎么办?
答案 0 :(得分:4)
不要使用正则表达式。使用HTML解析器。 BeautifulSoup使任务变得简单:
from bs4 import BeautifulSoup
soup = BeautifulSoup(htmltext)
text = soup.find('textarea', id='lao').string
如果您需要将结果限制为只老挝字符,则可以进一步处理text
变量。
然而,当涉及到Unicode时,Python re
模块并不那么强大。您可以选择使用正则表达式来获取0E80-0EFF范围内的代码点,使用unicodedata
module并过滤unicode代码点名称,或使用regex
library仅匹配老挝字符。< / p>
使用正则表达式:
import re
lao_codepoints = re.compile(ur'[\u0e80-\u0eff]', re.UNICODE)
lao_text = u''.join(lao_codepoints.findall(text))
演示:
>>> print u''.join(lao_codepoints.findall(text))
ຮັກມັກຫຼາຍຢາກໄດ້ຫຼາຍຢາກເຮັດຫຼາຍປະເພດຄໍາກໍາມະການອອກສຽງເລັຟຄວາມຮັກຄົນຮັກຄູ່ຮັກສິ່ງທີ່ເຈົ້າຮັກທີ່ຮັກເທັນນິດສູນຮັກຜູ້ໃດຜູ້ໜຶ່ງຮ່ວມປະເວນີປະເພດຄຳນາມການອອກສຽງເລັຟ
使用unicodedata
模块:
import unicodedata
loa_text = u''.join([ch for ch in text if unicodedata.name(ch, '').startswith('LAO')])
演示:
>>> print u''.join([ch for ch in text if unicodedata.name(ch, '').startswith('LAO')])
ຮັກມັກຫຼາຍຢາກໄດ້ຫຼາຍຢາກເຮັດຫຼາຍປະເພດຄໍາກໍາມະການອອກສຽງເລັຟຄວາມຮັກຄົນຮັກຄູ່ຮັກສິ່ງທີ່ເຈົ້າຮັກທີ່ຮັກເທັນນິດສູນຮັກຜູ້ໃດຜູ້ໜຶ່ງຮ່ວມປະເວນີປະເພດຄຳນາມການອອກສຽງເລັຟ
使用regex
模块:
import regex
lao_codepoints = regex.compile(ur'\p{Lao}', regex.UNICODE)
lao_text = u''.join(lao_codepoints.findall(text))
演示:
>>> print u''.join(lao_codepoints.findall(text))
ຮັກມັກຫຼາຍຢາກໄດ້ຫຼາຍຢາກເຮັດຫຼາຍປະເພດຄໍາກໍາມະການອອກສຽງເລັຟຄວາມຮັກຄົນຮັກຄູ່ຮັກສິ່ງທີ່ເຈົ້າຮັກທີ່ຮັກເທັນນິດສູນຮັກຜູ້ໃດຜູ້ໜຶ່ງຮ່ວມປະເວນີປະເພດຄຳນາມການອອກສຽງເລັຟ