Bagaimana untuk mengekstrak nama domain menggunakan ungkapan biasa python
淡淡烟草味
淡淡烟草味 2017-06-22 11:51:53
0
2
977
<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...

淡淡烟草味
淡淡烟草味

membalas semua(2)
ringa_lee

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

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']
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan