gpt4 book ai didi

python - 老挝的正则表达式?

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:13 25 4
gpt4 key购买 nike

在 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'>&nbsp;&nbsp;&nbsp;</span></span>&nbsp;&nbsp;
</td>
</tr>
<tr>
<td style='width: 120px'>&nbsp;</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'>&nbsp;&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td id='lao1' align='center'>ກະຊວງ ໄປສະນີ, ໂທລະຄົມມະນາຄົມ ແລະ ການສື່ສານ</td><td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td id='lao1' align='center'>ສູນບໍລິຫາລັດດ້ວຍເອເລັກໂຕຣນິກ</td><td>&nbsp;</td>
</tr>
</table></center><br />

我只想要“textarea”中的值。我该怎么办?

最佳答案

不要使用正则表达式。使用 HTML 解析器。 BeautifulSoup使任务变得简单:

from bs4 import BeautifulSoup

soup = BeautifulSoup(htmltext)
text = soup.find('textarea', id='lao').string

如果您随后需要将结果限制为 老挝语字符,您可以进一步处理text 变量。

但是,Python re 模块在处理 Unicode 时还没有那么强大。您的选择是使用正则表达式来获取 0E80–0EFF 范围内的代码点,使用 unicodedata module并过滤 unicode 代码点名称,或使用 regex library只匹配老挝字符。

  • 使用正则表达式:

    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))
    ຮັກມັກຫຼາຍຢາກໄດ້ຫຼາຍຢາກເຮັດຫຼາຍປະເພດຄໍາກໍາມະການອອກສຽງເລັຟຄວາມຮັກຄົນຮັກຄູ່ຮັກສິ່ງທີ່ເຈົ້າຮັກທີ່ຮັກເທັນນິດສູນຮັກຜູ້ໃດຜູ້ໜຶ່ງຮ່ວມປະເວນີປະເພດຄຳນາມການອອກສຽງເລັຟ

关于python - 老挝的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16463408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com