Comment extraire un nom de domaine à l'aide d'une expression régulière Python
淡淡烟草味
淡淡烟草味 2017-06-22 11:51:53
0
2
1002
<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...

淡淡烟草味
淡淡烟草味

répondre à tous(2)
ringa_lee

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 🎜.
世界只因有你

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']
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal