【问题标题】:Javascript Object to json or pytrhon dic to get a value [closed]Javascript对象到json或python dict以获取值[关闭]
【发布时间】:2021-09-13 03:33:12
【问题描述】:

您好,我有以下多行文字:

data="""

var config = {
                locale: 'es',
                userAuthenticated: false,
                propertyId: 94616716,
                favoriteFirstTime: true,
                discardFirstTime: true,
                urlAddFavorite: '/add-favorite.htm',
                urlAdNewContactInfo: '/es/ajax/listingController/adContactInfoForDetail.ajax',
                addFavoriteTargetId: '32',
                discardTargetId: '39',
                viewStatisticsTargetId: '40',
                urlRemoveFavorite: '/remove-favorite.htm',
                urlAddDiscarded: '/add-ruled-out-detail.htm',
                urlRemoveDiscarded: '/remove-ruled-out.htm',
                urlAddComment: '/update-favorite-comment.htm',
                urlContact: '/ajax/contact/2/sendcontact.ajax',
                urlCounterOffer: '/ajax/contact/suggested/4/sendcontact.ajax',
                urlContactDetailGallery: '/ajax/contact/42/sendcontact.ajax',
                urlContactDetailGalleryVirtualTour: '/ajax/contact/suggested/sendcontact.ajax',
                urlContactDetailGalleryFloorPlan: '/ajax/contact/45/sendcontact.ajax',
                urlContactDetailGallery3DTour: '/ajax/contact/46/sendcontact.ajax',
                urlContactDetailGalleryVideo: '/ajax/contact/47/sendcontact.ajax',
                urlContactVideoVisitation : '/ajax/contact/sendVideoVisitationContact.ajax',
                urlSuggestedAgencies: '/ajax/zoneexperts/suggested/2/sendcontact.ajax',
                urlReloadCaptcha: '/ajax/captcha/reloadCaptcha.ajax',
                urlVirtualTour: '',
                urlAlertSummary: '/ajax/alertsummary.ajax/25',
                mediaTablet: 'screen and (max-device-width: 1023px) and (min-device-width: 767px), screen and (max-width: 1023px) and (min-width: 767px)',
                mediaMobile: 'screen and (max-width: 767px)',
                mediaDesktop: 'screen and (min-width: 1024px) and (min-device-width: 1024px)',
                mediaLandscape: 'screen and (orientation: landscape)',
                mortgagesMinSavingsToContact: 7,
                showLightboxPosition: null,
                showLightboxVirtualTour: false,
                detailUrl: '/inmueble/94616716/',
                imageSizes: {"1280X400":80,"140X105":80, "140":80, "300":85, "600":80, "850":80, "1500":80, "250X188":80, "500X375":80, "300X225":80, "600X450":80},
                maxAdContactMessagesSuggested: 3,
                openContactModal: false,
                showAdIncidenceForm: false,
                urlContactMortgages: '/ajax/contact-mortgages.ajax?xtatc=[detalle_solicitar_hipoteca]',
                xitiClientMarkup: {detailFavoritesLoginInPlace:"detalle::conversiones::login-favoritear-inplace",detailRuledOutLoginInPlace:"detalle::conversiones::login-descartar-inplace",detailIncidenceSendForm:"detalle::conversiones::form-reportar-error",detailContactForm:"detalle::conversiones::form_contacto"},
                contactInGalleryLightboxTitle: "Contactar",
                contactInGalleryFormTitle: "¿Te ha gustado?",
                urlCreateUserAskingStats: '/new-user-asking-stats.ajax',
                showMorePhotos: {
                    desktop: {
                        position: 4,
                        threshold: 4,
                    },
                    mobile: {
                        position: 3,
                        threshold: 3,
                    }
                },
                phoneIntlConfig: {
                    initialCountry : "es",
                    preferredCountries : [],
                    allCountries: []
                },
                urlCalculateUCISavings: '/ajax/calculate-savings-form',
                urlConversations: '',
                currentSearchUrl: '/alquiler-habitacion/barcelona-provincia/?ordenado-por=fecha-publicacion-desc&ordenado-por=fecha-publicacion-desc',
                urlResultsFromComparator: '/ajax/retrieve-comparator-results.ajax',
                urlResultsFromValidationStep1: '/hipotecas/validate-mortgages-contact-step1.ajax',
                urlResultsFromValidationStep2: '/hipotecas/validate-mortgages-contact-step2.ajax',
                staticsBaseUri: 'https://st1.idealista.com/static',
                galleryReactToggle: true,
                isFavourite: false,
                showContact: true,
                detailWithSuggestionsToggle: true,
                hasToShowRecommendations: false,
                auctionDepositTooltipTitle: "¿Cómo se calcula el depósito?",
                auctionDepositTooltipBody: "Se calcula a partir de la oferta que se quiere presentar o al precio de venta de base, según la subasta.",
                useMaxImageSizeDesktop850: true,
                useFixedHeightFakeAnchors: true,
                useBufferGalleryAdapted: true,
                showActionsRecommendationsDetail: false,
                detailWithSuggestionsGalleryToggle: false,
            };
            var microsoft_key = '';
            var mapConfig = {
                latitude: '41.4104573',
                longitude: '2.1971312',
                onMapElements: false,
                markerType: 0,
                markerVisible: 1,
                i18nDetail: '',
                versionId: '3.30',
                language: 'es',
                clientId: 'gme-idealistalibertad1',
                dataProvider: 'googlev3',
                channel: 'map_detail'
            };
"""

我正在寻找一种将文本(JS OBJECT)转换为 JSONF 文件或 python dic 的方法。

我只需要一种方法来获取“var map Config”中的“纬度”和“经度”值

var mapConfig = {
                latitude: '41.4104573',
                longitude: '2.1971312',
                onMapElements: false,
                markerType: 0,
                markerVisible: 1,
                i18nDetail: '',
                versionId: '3.30',
                language: 'es',
                clientId: 'gme-idealistalibertad1',
                dataProvider: 'googlev3',
                channel: 'map_detail'
            };

我知道我也可以使用正则表达式多行,但是,我正在寻找最好和最简单的方法来获得它。

【问题讨论】:

  • 你有什么尝试想出这样的正则表达式?请分享你的代码,你得到了什么以及你期望什么。 stackoverflow.com/help/how-to-ask
  • 正则表达式通常是错误的工具。 HTML 不是常规语言;正则表达式绝对无法解析它。 JavaScript 也一样。

标签: javascript python json regex


【解决方案1】:
  • data 中提取mapConfig
    import re
    map_config_str = re.search('mapConfig = ([^;]*);', data).group(1) 
    
  • 使用demjsonother libraries 将javascript 对象从字符串解码为python dict
    import demjson
    map_config = demjson.decode(map_config_str)
    print(map_config['latitude'], map_config['longitude'])
    

【讨论】:

  • 谢谢,先生,这对我有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2017-11-07
  • 2017-06-14
  • 1970-01-01
相关资源
最近更新 更多