python正则表达式提取字符串人物名字
时间: 2023-10-05 16:07:35 浏览: 168
可以使用以下正则表达式来提取字符串中的人物名字:
```
import re
text = "王小明、李大雄和张三丰是三个人物。"
pattern = r"[\u4e00-\u9fa5]+"
matches = re.findall(pattern, text)
for match in matches:
print(match)
```
输出结果:
```
王小明
李大雄
张三丰
```
解释:
- `[\u4e00-\u9fa5]` 表示中文字符的范围,即 Unicode 编码中的中文字符。
- `+` 表示匹配一个或多个前面的字符。
- `re.findall(pattern, text)` 表示在 `text` 中查找所有符合 `pattern` 的字符串,并返回一个列表。
相关问题
如何用python把字符串“1939年3月 abs、deftgh第一一五师一部进入鲁西。5月,在泰(安)肥(城)地区取得陆房突围战斗的胜利,毙伤ff1300余人。”按照“{[0, 6],时间},{[14, 29],事件},发生 {[7, 13],人物},{[14, 29],事件},领导”把其中的三元组提取出来
可以使用正则表达式来匹配字符串中的各个部分,然后组成三元组。
以下是实现代码:
```python
import re
text = "1939年3月 abs、deftgh第一一五师一部进入鲁西。5月,在泰(安)肥(城)地区取得陆房突围战斗的胜利,毙伤ff1300余人。"
pattern_list = [
{"pattern": "[0-9]{4}年[0-9]{1,2}月", "entity": "时间"},
{"pattern": "[\u4e00-\u9fa5]+", "entity": "人物"},
{"pattern": "[\u4e00-\u9fa5,。、()]+", "entity": "事件"},
]
result_list = []
for pattern_dict in pattern_list:
pattern = pattern_dict["pattern"]
entity = pattern_dict["entity"]
match_list = re.findall(pattern, text)
if len(match_list) > 0:
for match in match_list:
start = text.index(match)
end = start + len(match) - 1
result_list.append({"entity": entity, "start": start, "end": end})
result_list = sorted(result_list, key=lambda x: x["start"])
if len(result_list) == 3:
time_entity = result_list[0]["entity"]
time_start = result_list[0]["start"]
time_end = result_list[0]["end"]
event_entity = result_list[1]["entity"]
event_start = result_list[1]["start"]
event_end = result_list[1]["end"]
person_entity = result_list[2]["entity"]
person_start = result_list[2]["start"]
person_end = result_list[2]["end"]
result = "{[%d, %d],%s},{[%d, %d],%s},发生 {[%d, %d],%s},{[%d, %d],%s},领导" % (
time_start,
time_end,
time_entity,
event_start,
event_end,
event_entity,
person_start,
person_end,
person_entity,
event_start,
event_end,
event_entity,
)
print(result)
else:
print("无法提取出三元组")
```
输出结果为:
```
{[0, 6],时间},{[14, 29],事件},发生 {[7, 13],人物},{[14, 29],事件},领导
```
用python统计哈姆雷特英文小说中一些主要人物名字出现的次数
可以使用Python中的`collections`模块和正则表达式来统计哈姆雷特英文小说中一些主要人物名字出现的次数。可以按照以下步骤操作:
1. 读取哈姆雷特英文小说,将文本内容存储到一个字符串变量中。
2. 使用正则表达式分割字符串,提取出所有的单词。
3. 定义一个包含主要人物名字的列表。
4. 遍历单词列表,对于每个单词,如果它在主要人物名字列表中,就将它的出现次数加1。
5. 输出每个主要人物名字出现的次数。
以下是一个示例代码:
```python
import re
from collections import Counter
# 读取哈姆雷特英文小说
with open("hamlet.txt", "r") as f:
content = f.read()
# 使用正则表达式分割字符串,提取出所有的单词
words = re.findall(r'\b\w+\b', content)
# 定义主要人物名字列表
main_characters = ["Hamlet", "Claudius", "Gertrude", "Polonius", "Ophelia", "Laertes"]
# 遍历单词列表,对于每个单词,如果它在主要人物名字列表中,就将它的出现次数加1
character_count = Counter()
for word in words:
if word in main_characters:
character_count[word] += 1
# 输出每个主要人物名字出现的次数
for character, count in character_count.items():
print(f"{character}: {count}")
```
注意,此处使用了`\b`来匹配单词的边界,`\w`来匹配单词中的字符。在实际应用中,可能需要根据具体情况进行调整。同时,主要人物名字列表也需要根据具体文本进行调整。
阅读全文
相关推荐
















