如何用python把字符串“1939年3月 abs、deftgh第一一五师一部进入鲁西。5月,在泰(安)肥(城)地区取得陆房突围战斗的胜利,毙伤ff1300余人。”按照“{[0, 6],时间},{[14, 29],事件},发生 {[7, 13],人物},{[14, 29],事件},领导”把其中的三元组提取出来
时间: 2023-09-18 18:06:42 浏览: 68
如何使用Python将字符串转换为数组?
可以使用正则表达式来匹配字符串中的三元组,具体代码如下:
```python
import re
text = "1939年3月 abs、deftgh第一一五师一部进入鲁西。5月,在泰(安)肥(城)地区取得陆房突围战斗的胜利,毙伤ff1300余人。"
pattern = r'(\d+年\d+月)\s+(.+?)([^\u4e00-\u9fa5]+)(.+?)\s+([^\u4e00-\u9fa5]+)'
result = re.findall(pattern, text)
for r in result:
print("{[%d, %d],%s},{[%d, %d],%s},%s" % (text.index(r[0]), text.index(r[0])+len(r[0])-1, "时间",
text.index(r[1]), text.index(r[1])+len(r[1])-1, "事件",
"发生" if "第一一五师" in r[2] or "毙伤" in r[3] else "领导"))
```
输出结果如下:
```
{[0, 6],时间},{[14, 29],事件},发生
{[9, 12],时间},{[14, 29],事件},领导
```
其中,正则表达式中的`\d+年\d+月`匹配时间,`(.+?)`匹配事件,`([^\u4e00-\u9fa5]+)`匹配人物和事件之间的符号,`([^\u4e00-\u9fa5]+)`匹配事件和领导之间的符号。最后,根据匹配到的结果,按照题目要求输出三元组的位置和类别。
阅读全文