我有一些句子像
- "公寓在金奈有4个房间与游泳池">
- "这间公寓有三分之二的房间,里面有一个"香菜">
如何提取单词"之前的唯一数字;房间|房间";。寻找一个必须是4和2/3的答案。我试过的代码,
room_found =re.findall(r"ds?/?d?s?(?=(rooms)|(room))", str_arg)
print(room_found)
这将打印[('','4 room'(]和[(''、'2/3 room'](],但我预计只打印4和2/3。
您可以使用
d+(?:/d+)?(?=s?rooms?b)
解释
d+
匹配1个以上数字(或\d表示单个数字((?:/d+)?
可选地匹配/
和1+位数字(?=
积极前瞻,断言直接在右边的是s?rooms?b
匹配可选的whitspace字符,后跟一个或多个房间)
关闭展望
Regex演示
import re
str_arg = ""Apartment at Chennai has 4 rooms with a swimming pool" "this apartment has 2/3 room with a coridor""
room_found =re.findall(r"d+(?:/d+)?(?=s?rooms?b)", str_arg)
print(room_found)
输出
['4', '2/3']
您可以添加一个条件来查找单词room和rooms之前的所有数字。
你可以把所有有效的值都放在方括号里,就像你允许数字之外的正斜杠一样。
CCD_ 7=>它选择数字和正斜杠。
CCD_ 8=>它选择单词room和rooms前面的数字。
[d/]+(?=srooms?)
请在这里找到演示
您可以使用([0-9]+) rooms
。所以你的最终代码看起来像:
import re
str_arg = ""Apartment at Chennai has 4 rooms with a swimming pool" "this apartment has 2/3 room with a coridor""
room_found = re.findall(r"([0-9]+) rooms", str_arg)
print(room_found)