从python中的另一个字符串中搜索字符串

时间:2018-01-15 20:49:19

标签: python web-scraping

我正在尝试从下面的字符串中提取价格,所有者,姓名等信息。

str='invokeUrl("viewphonenumber","trackCode=Property_for_Rent_View_Phone_BVersion&isPhoto=N&pid=29563627&code=&price=Rs. 29,000&bedroom=2&area=2000 sqft&verified=&possession_status=Immediately&prop_number=1&offer=&owner=Agent&locality=Kadubeesanahalli&city=Bangalore&propertyType=Flat&categoryDesc=Rent&name=Manjunath&brEx=Y&js=true&page=result&from=search&call=N&pageOption=B&isSimilarProperty=N&moisd=50&cardType=card_Rent_O&isNight=true&isNri=false&isVisibleProperty=N<Id=86581&propertyTypeId=10002&cityId=3327&priceNumeric=29000&vph=Y","29563627");createCookie("contactTrackCookieData","Y","10");_gaq.push([ "_trackEvent", "propertySRP", "contactopen","view_card_Rent_O" ]);'
#print(str.split('&'))

我想从价格值中提取不同的值作为Rs。 29,000,所有者价值作为代理等。

你能帮我吗?

1 个答案:

答案 0 :(得分:0)

首先,将字符串重命名为s而不是str,因为后者会覆盖内置的str()函数。

因此,由于此问题的一般性质,您可以采取许多不同的方法。就个人而言,我会使用regex提取内部的第二个string(其中包含您想要的值),然后使用comprehensions的混合来形成dictionary。< / p>

s = your 'str'

import re
ss = re.findall('"(.*?)"', s)[1]
d = {p[:p.index('=')]:p[p.index('=')+1:] for p in ss.split('&')}

d作为:

{'moisd': '50', 'isNight': 'true', 'owner': 'Agent', 'js': 'true', 'page': 'result', 'isPhoto': 'N', 'trackCode': 'Property_for_Rent_View_Phone_BVersion', 'price': 'Rs. 29,000', 'cardType': 'card_Rent_O', 'isNri': 'false', 'cityId': '3327', 'pid': '29563627', 'pageOption': 'B', 'verified': '', 'bedroom': '2', 'offer': '', 'priceNumeric': '29000', 'city': 'Bangalore', 'prop_number': '1', 'categoryDesc': 'Rent', 'possession_status': 'Immediately', 'propertyType': 'Flat', 'from': 'search', 'isVisibleProperty': 'N<Id=86581', 'locality': 'Kadubeesanahalli', 'call': 'N', 'isSimilarProperty': 'N', 'area': '2000 sqft', 'code': '', 'vph': 'Y', 'brEx': 'Y', 'name': 'Manjunath', 'propertyTypeId': '10002'}

如果以上需要解释,请告诉我!

因此,您可以执行以下操作来提取price值:

>>> d['price']
'Rs. 29,000'