cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mengekstrak nama domain menggunakan ungkapan biasa 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>

Bagaimana cara menggunakan ungkapan biasa python untuk mengekstrak nama domain coggles.co.uk daripada skrip ini? Saya harap pakar dari semua lapisan masyarakat dapat menunjukkan kemahiran mereka kepada saya...

淡淡烟草味淡淡烟草味2773 hari yang lalu1020

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-06-22 11:53:53

    Apabila melaksanakan regularisasi, cuma pastikan bahawa penentukuran/ciri anda adalah unik. Tetapi "url"logo ini bukan satu-satunya. Pada masa ini kaedah @prolifes sangat bagus.

    Jika anda mesti melaksanakan pelaksanaan biasa, anda perlu menggunakan penegasan lebar sifar Sudah tentu, terjemahan perkataan ini agak mudah, yang membawa kepada banyak salah faham. Ia sebenarnya bermaksud padanan pada kedudukan yang ditentukan, dan lebar kedudukan ialah 0.

    Di sini kita boleh melihat perkara yang kita perlukan"url""location"Dalam "lokasi", kita boleh menggunakan ini sebagai maklumat lokasi.

    Kod adalah seperti berikut:

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

    Biar saya terangkan sedikit,
    (?<=lokasi) bermaksud mesti ada lokasi di hadapan. Jika ada kemudian, tuliskannya seperti ini: (?=location)(?<=location)这个地方就是指前面得有location。后面有的话这样写:(?=location)
    re.DOTALL这个是必须的,因为这些字符串已经跨行了。他的作用是将.的字符串匹配范围扩大,包含换行符。
    "([^"]+)"这个地方是我的习惯,[^"]意指所有非"re.DOTALLIni perlu kerana rentetan ini telah melintasi garisan. Fungsinya adalah untuk mengembangkan julat padanan rentetan . untuk memasukkan baris baharu.

    "([^"]+)" Tempat ini adalah tabiat saya, [^"] bermaksud semua aksara yang bukan ", Ini sepadan dengan semua rentetan yang disertakan dalam petikan berganda 🎜.

    balas
    0
  • 世界只因有你

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

    Ini adalah json yang agak standard, lebih kasar sedikit, cuma tukarkannya terus kepada 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']

    balas
    0
  • Batalbalas