recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment extraire un nom de domaine à l'aide d'une expression régulière Python

<script type="application/ld+json">{
    "@context": "http://schema.org",
    "@type": "SaleEvent",
    "name": "10% Off First Orders",
    "url": "https://www.myvouchercodes.co.uk/coggles",
    "image": "https://mvp.tribesgds.com/dyn/oh/Ow/ohOwXIWglMg/_/mQR5xLX5go8/m0Ys/coggles-logo.png",
    "startDate": "2017-02-17",
    "endDate": "2017-12-31",
    "location": {
        "@type": "Place",
        "name": "Coggles",
        "url": "coggles.co.uk",
        "address": "Coggles"
    },
    "description": "Get the top branded fashion items from Coggles at discounted prices. Apply this code and enjoy savings on your purchase.",
    "eventStatus": "EventScheduled"
}</script>

Comment utiliser l'expression régulière Python pour extraire le nom de domaine coggles.co.uk de ce script. J'espère que des experts de tous horizons pourront me montrer leurs compétences...

淡淡烟草味淡淡烟草味2834 Il y a quelques jours1051

répondre à tous(2)je répondrai

  • ringa_lee

    ringa_lee2017-06-22 11:53:53

    Lors de la mise en œuvre de la régularisation, assurez-vous simplement que votre calibrage/caractéristiques sont uniques. Mais "url"ce logo n'est pas le seul. En ce moment, la méthode de @prolifes est très bonne.

    Si vous devez mettre en œuvre une implémentation régulière, vous devez utiliser des assertions de largeur nulle. Bien entendu, la traduction de ce mot est relativement simple, ce qui conduit à de nombreux malentendus. Cela signifie en fait matching à la position spécifiée, et la largeur de la position est de 0.

    Ici, nous pouvons voir ce dont nous avons besoin"url""location"Dans "location", nous pouvons l'utiliser comme information de localisation.

    Le code est le suivant :

    re.search('(?<=location).+?"url": "([^"]+)"', string, re.DOTALL).group(1)

    Laissez-moi vous expliquer un peu,
    (?<=location) signifie qu'il doit y avoir un emplacement devant. S'il y en a plus tard, écrivez-le comme ceci : (?=location)(?<=location)这个地方就是指前面得有location。后面有的话这样写:(?=location)
    re.DOTALL这个是必须的,因为这些字符串已经跨行了。他的作用是将.的字符串匹配范围扩大,包含换行符。
    "([^"]+)"这个地方是我的习惯,[^"]意指所有非"re.DOTALLCeci est nécessaire car ces chaînes ont des lignes croisées. Sa fonction est d'étendre la plage de correspondance de chaîne de . pour inclure des nouvelles lignes.

    "([^"]+)" Cet endroit est mon habitude, [^"] signifie tous les caractères qui ne sont pas des ", Ceci correspond à toutes les chaînes entourées de guillemets doubles 🎜.

    répondre
    0
  • 世界只因有你

    世界只因有你2017-06-22 11:53:53

    C'est un json assez standard, un peu plus grossier, il suffit de le convertir directement en json

    import json
    
    str = '''
    <script type="application/ld+json">{
        "@context": "http://schema.org",
        "@type": "SaleEvent",
        "name": "10% Off First Orders",
        "url": "https://www.myvouchercodes.co.uk/coggles",
        "image": "https://mvp.tribesgds.com/dyn/oh/Ow/ohOwXIWglMg/_/mQR5xLX5go8/m0Ys/coggles-logo.png",
        "startDate": "2017-02-17",
        "endDate": "2017-12-31",
        "location": {
            "@type": "Place",
            "name": "Coggles",
            "url": "coggles.co.uk",
            "address": "Coggles"
        },
        "description": "Get the top branded fashion items from Coggles at discounted prices. Apply this code and enjoy savings on your purchase.",
        "eventStatus": "EventScheduled"
    }</script>
    '''
    
    d = json.loads(re.search('({[\s\S]*})', str).group(1))
    print d['location']['url']

    répondre
    0
  • Annulerrépondre