我正在尝试从下面的字符串中提取价格,所有者,姓名等信息。
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,所有者价值作为代理等。
你能帮我吗?
答案 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'