subprocess.call 에서 어떻게 JSON 파일을 불러올 수 있을까요?

조회수 658회

여러모로 파이썬을 배우고 있는 파린이 입니다..

금일 알려주셔서 subprocess모듈을 알게 되었는데요, subprocess.call 로 JSON 파일을 불러서 솔팅하여, 원하는 데이터를 뽑고싶은데, 잘 안되더라구요.

현재 막히고 있는 부분이


subprocess.call(["tldextract",  r.json() , "| sort | uniq | grep .com | tr -d ','"])

위 코드이며 에러 내용은 TypeError: expected str, bytes or os.PathLike object, not dict 입니다. 어떻게 해야 제가 r.json() 을 해당 subprocess.call에서 원하는 데이터를 추출 할 수 있을까요?

아래는 전체 코드입니다.


import requests, json
import subprocess

url = "http://localhost:5000/search"

data = {
    "image_url":"http://www.mrtt.news/news/photo/201806/147_281_1930.jpg",
    "resized_images":True # Or true
}


headers = {'Content-type': 'application/json'}
r = requests.post(url, headers=headers, data=json.dumps(data))



subprocess.call(["tldextract",  r.json() , "| sort | uniq | grep .com | tr -d ','"])

#r.json to get the response as json

print(r.Json()) 의 값 입니다.



{'links': ['https://www.youtube.com/watch?v=4fp1-aT2fTM', 'https://www.youtube.com/watch?v=SB-qEYVdvXA', 'https://www.reddit.com/r/cute/comments/8t19z2/very_cute_baby_cat/', 'https://www.pinterest.com/pin/109353097187570937/', 'https://www.pinterest.com/pin/403775922833923724/', 'https://www.pinterest.es/pin/697565429756481875/', 'https://www.pinterest.com/pin/350366046009420779/'], 'descriptions': ['Dec 27, 2018 - Baby Cats - Funny and Cute Baby Cat Videos Compilation (2018) Gatitos Bebes Video Recopilación | Animal Planet Videos 🦄 Subscribe Here:\xa0...', 'Mar 18, 2018 - So many cute kittens videos compilation 2018 .... My Favorite Cat Little Kitten Pet Care | Play Cat Care Games for Baby Toddlers and Children\xa0...', '750 × 849 - Jun 22, 2018 - r/cute: A place for cute stuffs. ... Very cute baby cat. Post image. comment. share. save hide report ... More posts from the cute community. 441. Posted by.', '1080 × 1225 - We are two sisters who love to create and inspire! We make pretty amazing candles! Check out our shops and other projects! We really appreciate your support.', '847 × 960 - Cute Baby CatsCute KittensVery Cute BabyKittens Cutest BabyCute Baby AnimalsCute BabiesCats And KittensAnimals And PetsFunny Animals.', '847 × 960 - Discover ideas about Cute Baby Cats. Very cute baby cat : cute Kittens baby baby cat. Cute Baby CatsCute KittensVery Cute BabyKittens Cutest BabyCute Baby\xa0...', '847 × 960 - Big Hugs From, "JacquiandScott" and The House of 10000 Cats. Vous Dit... "Little ... you cute but have strange attitude :-P Baby Cats, Cats And Kittens,. 0:12.'], 'titles': [], 'similar_images': [], 'best_guess': 'very cute baby cat', 'resized_images': [{'cb': 3, 'id': 'WfmFKrykHQF8dM:', 'isu': 'saveig.com', 'itg': 0, 'ity': 'jpg', 'oh': 1261, 'ou': 'https://scontent-sea1-1.cdninstagram.com/vp/b5949e6f0cbc3ff59ebafa88f31c6fd6/5D6BFB23/t51.2885-15/e35/58453798_436911850212088_579801743869751878_n.jpg?_nc_ht=scontent-sea1-1.cdninstagram.com&dl=1', 'ow': 1080, 'pt': 'Cats of Instagram (@cats_of_world_) 的ins 照片和视频下载- SaveIG', 'rh': 'saveig.com', 'rid': 'UhQLF_jKRqbmbM', 'rmt': 0, 'rt': 0, 'ru': 'https://saveig.com/cats_of_world_/?lang=zh-cn', 'st': 'SaveIG', 'th': 243, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRQh_2694OOqWHinQiQRjS-E__qUpXWw4JiNTi9DJX-7gJEx4Go&s', 'tw': 208}, {'cb': 3, 'ct': 3, 'id': 'Joe1fMtck_PKVM:', 'isu': 'pinterest.dk', 'itg': 0, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://i.pinimg.com/originals/ca/2f/56/ca2f564d683c0ce9bdb0f72aa75fa53d.jpg', 'ow': 1080, 'pt': 'Pin by I collect cellists and other wonderful things on ...', 'rh': 'pinterest.dk', 'rid': 'aXgHJ6lXo1ZlXM', 'rmt': 0, 'rt': 0, 'ru': 'https://www.pinterest.dk/pin/326862885447371555/', 'st': 'Pinterest', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSnzgeOH9pIQXQacJvWK6eVvnQBYWiFPisKgbA4PNfLWp1F9dv0iw&s', 'tw': 211}, {'cb': 3, 'cr': 3, 'ct': 3, 'id': 'O3PxLqobl-72qM:', 'isu': 'reddit.com', 'itg': 0, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://preview.redd.it/pgelbwe2eit11.jpg?auto=webp&s=e205580728b005220ff6d1ba14d785ac468e852e', 'ow': 1080, 'pt': 'Really cute kitty : aww', 'rh': 'reddit.com', 'rid': 'WUdviQVNI4sRCM', 'rmt': 0, 'rt': 0, 'ru': 'https://www.reddit.com/r/aww/comments/9q2bd5/comment/e864g8z?utm_source=amp&utm_medium=&utm_content=comment_vote', 'st': 'Reddit', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRYaA_B0FFWWgX7WFc_KDegKOADD_uq532b88IxQIVK56fdunZ2&s', 'tw': 211}, {'cb': 3, 'cr': 3, 'ct': 6, 'id': 'L5OrurVyJOcUvM:', 'isu': 'pinterest.com', 'itg': 0, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://i.pinimg.com/originals/7b/9b/37/7b9b37938440943c18219ff4fec392af.jpg', 'ow': 1080, 'pt': 'ettaarlene: “cat love ” | Cute baby cats, Baby cats, Kittens ...', 'rh': 'pinterest.com', 'rid': 'T3KMoyhdG6vxJM', 'rmt': 0, 'rt': 0, 'ru': 'https://www.pinterest.com/pin/109353097187570937/', 'st': 'Pinterest', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRLyHRHhNkt1n-nnjsMRNTuwLXISMWKwfonvJdydkXcjLFY5GUq&s', 'tw': 211}, {'cb': 3, 'cr': 3, 'ct': 3, 'id': 'FLCVjiMwyOVr6M:', 'isu': 'tumblrgallery.com', 'itg': 1, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://78.media.tumblr.com/08dc4a76a6458d35684024de3daca065/tumblr_pfbwpr7dpa1xnqe5bo5_1280.jpg', 'ow': 1080, 'pt': 'RoguexStar Nerdy Femboy Cosplay & Trap - Tumblr Blog Gallery', 'rh': 'tumblrgallery.com', 'rid': 'ozXocb1FBMPzwM', 'rmt': 0, 'rt': 0, 'ru': 'https://tumblrgallery.com/tumblrblog/gallery/863516/2.html', 'st': 'Tumblr Gallery', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQMaD3g0tz8boSuK7t02BaRFNULbCmxOxdzXoutwrPkABXUIXqOUg&s', 'tw': 211}, {'cb': 3, 'cr': 3, 'ct': 3, 'id': 'ZtMVYr8AeeG0UM:', 'isu': 'gr.pinterest.com', 'itg': 1, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://i.pinimg.com/originals/b6/6b/e3/b66be30cf1387d3b92280ca14f7623dd.jpg', 'ow': 1080, 'pt': 'Pin di ⓀⒶⓉⒾⒺ su everything | Χαριτωμένα γατάκια, Γάτες ...', 'rh': 'gr.pinterest.com', 'rid': '9ER-xJueb_F_7M', 'rmt': 0, 'rt': 0, 'ru': 'https://gr.pinterest.com/pin/228909593545875060/', 'st': 'Pinterest', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRcDJ3nmRAoFYoKTf4VLIRuS0Nq_7JUZwNwleo8VMmHjLFp1gMm8g&s', 'tw': 211}, {'cb': 3, 'cr': 3, 'ct': 3, 'id': 'bjTYJYjjNKgLWM:', 'isu': 'deskgram.net', 'itg': 0, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://scontent-atl3-1.cdninstagram.com/vp/c47d1cc3b9043bd9804d950b7ca7c2af/5DA01B3A/t51.2885-15/e35/62271616_187405512251624_2923124705191749970_n.jpg?_nc_ht=scontent-atl3-1.cdninstagram.com', 'ow': 1080, 'pt': 'kittydaisyandlewis - Hash Tags - Deskgram', 'rh': 'deskgram.net', 'rid': 'bhxzmdZG02wZrM', 'rmt': 0, 'rt': 0, 'ru': 'https://deskgram.net/explore/tags/kittydaisyandlewis', 'st': 'Deskgram', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRIOIMBfB3GhDQnxyB9PLR20hm8oVDkhjLY_iz0xJ4GDYz0RD6YGA&s', 'tw': 211}, {'cb': 3, 'cr': 3, 'id': 'bBWKMxD_RaKyeM:', 'isu': 'weheartit.com', 'itg': 1, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://data.whicdn.com/images/319702498/original.jpg', 'ow': 1080, 'pt': '1000+ images about Beauty of Nature on We Heart It | See ...', 'rh': 'weheartit.com', 'rid': 'ztEkasx-H_44OM', 'rmt': 0, 'rt': 0, 'ru': 'https://weheartit.com/Mon_tan/collections/93332186-beauty-of-nature', 'st': 'We Heart It', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTxDjH1z0PWIi95fOSo719CweM8r-YxbgnpZWpfHaT7w7OlKTKA&s', 'tw': 211}, {'cb': 3, 'cr': 3, 'ct': 3, 'id': 'yF5Xu_uvf28aJM:', 'isu': 'hotsta.org', 'itg': 1, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://scontent-lhr3-1.cdninstagram.com/vp/fb4d2dbb3d22f6bf800a51dced610b70/5DEA3888/t51.2885-15/e35/65285422_174857073549434_3017491431400533219_n.jpg?_nc_ht=scontent-lhr3-1.cdninstagram.com&se=7&ig_cache_key=MjA3Njg5NDYxODg1Mjk3NDUwNQ%3D%3D.2', 'ow': 1080, 'pt': 'munchkinminnie - Instagram photos and videos', 'rh': 'hotsta.org', 'rid': 'gMj1feaQjB0eOM', 'rmt': 0, 'rt': 0, 'ru': 'http://hotsta.org/tag/munchkinminnie', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRE1m4horicL--Jvxirj6ymDFGXFwef9Jge6gkp9U2U4-11bKNQMQ&s', 'tw': 211}, {'cb': 3, 'cr': 3, 'ct': 3, 'id': 'kjsaCWJ65UsOAM:', 'isu': 'pinterest.ru', 'itg': 1, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://i.pinimg.com/originals/f9/5c/de/f95cdeda10788ff8773c28f715da7217.jpg', 'ow': 1080, 'pt': 'Pinterest – Пинтерест', 'rh': 'pinterest.ru', 'rid': 'DbM3MjSAoLmvuM', 'rmt': 0, 'rt': 0, 'ru': 'https://www.pinterest.ru/pin/640848221955187442/', 'st': 'Pinterest – Пинтерест', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS7b5TdTisUD0QLrkv5NA0t4ot4DkV5GNVWQWVpqF3IQVPyzB5S&s', 'tw': 211}, {'cb': 3, 'ct': 3, 'fd': '4 days ago', 'id': 'vkoyVm2YLzXPsM:', 'isu': 'stagram.fun', 'itg': 1, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://scontent-otp1-1.cdninstagram.com/v/t51.2885-15/e35/75349287_420016302214127_7137172413008772691_n.jpg?_nc_ht=scontent-otp1-1.cdninstagram.com&_nc_cat=1&oh=d69312f253c6df5b9824424841037b27&oe=5E8C84A1', 'ow': 1080, 'pt': 'catswiththeirmouthopen Instagram Photos and Videos', 'rh': 'stagram.fun', 'rid': '90Bp1Eh8WoKNaM', 'rmt': 0, 'rt': 0, 'ru': 'http://stagram.fun/hashtag/catswiththeirmouthopen', 'st': 'promook', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSAnoGz3kQEZrtIHOm3H2WcgMwOg6vx-qj4q3_WMyNcFN41Bg4I&s', 'tw': 211}, {'cb': 3, 'cr': 3, 'ct': 3, 'fd': '4 days ago', 'id': 'BVV1LV99FQU7AM:', 'isu': 'diy.5minutecraft.icu', 'itg': 1, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://scontent-frt3-2.cdninstagram.com/v/t51.2885-15/e35/79720101_990261437997699_3628962184697728556_n.jpg?_nc_ht=scontent-frt3-2.cdninstagram.com&_nc_cat=103&oh=a81e05fe978e7d1b37751141e8100077&oe=5E6E7B53', 'ow': 1080, 'pt': 'kedi Instagram Photos and Videos', 'rh': 'diy.5minutecraft.icu', 'rid': 'UyvPeSJSzwxwDM', 'rmt': 0, 'rt': 0, 'ru': 'http://diy.5minutecraft.icu/hashtag/kedi', 'st': 'Diy 5MinuteCraft', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSn9eiArYeZJHDGVS0YcZXN_il29V7FUQ8Dg_rNfz_Dc8R0IEsW&s', 'tw': 211}, {'cb': 3, 'cl': 3, 'cr': 3, 'ct': 6, 'id': 'fikJP0vkPbgASM:', 'isu': 'saveig.com', 'itg': 0, 'ity': 'jpg', 'oh': 1225, 'ou': 'https://scontent-sin2-1.cdninstagram.com/vp/a8380379ad28129caca2ded2244218a9/5DF2E8D1/t51.2885-15/e35/57348351_121054355748969_730716182287620335_n.jpg?_nc_ht=scontent-sin2-1.cdninstagram.com&_nc_cat=109&dl=1', 'ow': 1078, 'pt': 'Lovely Cat Online (@lovelycatonline) 📷 from @mochicat168 ...', 'rh': 'saveig.com', 'rid': 'g2-BzPrgPUXEBM', 'rmt': 0, 'rt': 0, 'ru': 'https://saveig.com/p/BwyHUUCFT0U/', 'st': 'SaveIG', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSHBr1QmafuRVk53wqr5NxsCeZ1rh2P09Is58WvSMK0cb-rqSdk&s', 'tw': 211}, {'cr': 3, 'id': 'pxF6NNFx9m37OM:', 'isu': 'petshopqu.blogspot.com', 'itg': 0, 'ity': 'jpg', 'oh': 1177, 'ou': 'http://kucingpersiaku77.com/wp-content/uploads/2018/01/catnowadays___BdmwhwCFlfX___.jpg', 'ow': 1080, 'pt': 'PET SHOP', 'rh': 'petshopqu.blogspot.com', 'rid': 'M1-RsKqeHn4XDM', 'rmt': 0, 'rt': 0, 'ru': 'https://petshopqu.blogspot.com/', 'th': 234, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQui5fhxJk4YBhEb08qGD3lt-Kp1UT4K-p9DX0nz5d3EneEvQiRUw&s', 'tw': 215}, {'cb': 3, 'cr': 3, 'ct': 3, 'id': 'T5h0XiCMNNcunM:', 'isu': 'twitter.com', 'itg': 0, 'ity': 'jpg', 'oh': 1200, 'ou': 'https://pbs.twimg.com/media/EJ_nc7oXUAA4F3I.jpg', 'ow': 1058, 'pt': 'Maxime Beugnet (@MBeugnet) | Twitter', 'rh': 'twitter.com', 'rid': 'ErfYAfhPhrK1SM', 'rmt': 0, 'rt': 0, 'ru': 'https://twitter.com/mbeugnet', 'st': 'Twitter', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRdqYS9n_Kl04p2UUzvEq-Im1DLQbMk5djm2da1vbmynhWBJYeWAQ&s', 'tw': 211}, {'cb': 3, 'cl': 3, 'cr': 3, 'ct': 3, 'fd': '4 days ago', 'id': '9E1GabglE7MYsM:', 'isu': 'yandex.by', 'itg': 1, 'ity': 'jpg', 'oh': 1200, 'ou': 'https://oir.mobi/uploads/posts/2019-11/thumbs/1574898428_milye-kotiki-80.jpg', 'ow': 1058, 'pt': '197 карточек в коллекции «Милые котики: фото и обои на ...', 'rh': 'yandex.by', 'rid': 'LUbPWhmaBLL-NM', 'rmt': 0, 'rt': 0, 'ru': 'https://yandex.by/collections/user/irishkazabiyaka/milye-kotiki-foto-i-oboi-na-rabochii-stol/', 'st': 'Яндекс', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRmgNVSctrDzdYqlJsfLnTpnrtMehYEA5gb5cQMFjLKDcscs_Cc&s', 'tw': 211}, {'cb': 3, 'cl': 3, 'ct': 3, 'id': 'wqVykhLuNjuV4M:', 'isu': 'twitter.com', 'itg': 1, 'ity': 'jpg', 'oh': 1200, 'ou': 'https://pbs.twimg.com/media/ECwNMgaUYAE893a.jpg', 'ow': 1058, 'pt': 'Media Tweets by cute cats (@kabe1600) | Twitter', 'rh': 'twitter.com', 'rid': 'Mdi2XfPBNzFCdM', 'rmt': 0, 'rt': 0, 'ru': 'https://twitter.com/kabe1600/media', 'st': 'Twitter', 'th': 239, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRfvcxrhp1HzkhEqW04JR0ju2SCODc5TGjbpMc7gIawM6YoQhwt&s', 'tw': 211}, {'id': 'YhTbb7Au9___qM:', 'isu': 'weheartit.com', 'itg': 1, 'ity': 'jpg', 'oh': 1174, 'ou': 'https://data.whicdn.com/images/337942081/original.jpg', 'ow': 1080, 'pt': '418 images about ✨ fur babies ✨ on We Heart It | See more ...', 'rh': 'weheartit.com', 'rid': 'qlL7-uCRLfqdwM', 'rmt': 0, 'rt': 0, 'ru': 'https://weartit.com/cloutie/collections/156131010-fur-babies', 'st': 'We Heart It', 'th': 234, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTOmS4dUk0UGCnPm1i6utsvTGYUMukpf4mo6YF5hx4U8q3AJsyCDg&s', 'tw': 215}, {'cr': 3, 'ct': 3, 'id': '4TwNlkEK7V5B_M:', 'isu': 'pinterest.com', 'itg': 1, 'ity': 'jpg', 'oh': 1131, 'ou': 'https://i.pinimg.com/originals/52/19/d7/5219d7566d488ba54a2443a9e7180e99.jpg', 'ow': 1080, 'pt': 'Pin de ghost em Animal | Filhotes de gatos, Gatos bebê e Gatos', 'rh': 'pinterest.com', 'rid': 'V1IOeIdy9_IoqM', 'rmt': 0, 'rt': 0, 'ru': 'https://www.pinterest.com/pin/826692075328890471/', 'st': 'Pinterest', 'th': 230, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS2AE9DK4lLu1C_Uggo2sLJwziE1d9l5mNYZUQuHO8wRHJZbQVS&s', 'tw': 219}, {'cb': 3, 'cl': 3, 'ct': 3, 'id': '90DBZhIMGo8_pM:', 'isu': 'facebook.com', 'itg': 1, 'ity': '', 'oh': 960, 'ou': 'https://lookaside.fbsbx.com/lookaside/crawler/media/?media_id=1766464110330064', 'ow': 861, 'pt': 'Distributor Kouta Dan Pulsa Murah - Accessories - Bogor ...', 'rh': 'facebook.com', 'rid': '6BKRXneeprqpaM', 'rmt': 0, 'rt': 0, 'ru': 'https://www.facebook.com/distributorkouta', 'st': 'Facebook', 'th': 237, 'tu': 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ6iMry98JSgvl6L_kG4f9ieDWIEcMP0oxs3kJCaX_lnspqlXiZ&s', 'tw': 213}]}
  • (•́ ✖ •̀)
    알 수 없는 사용자
  • subprocess 로 하는 건 답이 아닐 것 같습니다. print(r.json()) 결과 값을 추가해 주시겠습니까? nowp 2019.12.19 01:01
  • 그런가요, .. 네, 본문에 추가 하였습니다. 알 수 없는 사용자 2019.12.19 01:11
  • tldextract 을 포크하지 말고 모듈로 사용하면 된다고 아랫 질문에 적어드렸는데... 정영훈 2019.12.19 01:21
  • 네, tldextract모듈로 사용할경우에도 sort | uniq | grep .com | tr -d ',' 등의 유닉스 명령어를 사용하고 싶어서요 .. 결국 subprocess.call를 사용해서 받아와야 하지 않나 싶어서요.. 알 수 없는 사용자 2019.12.19 01:27
  • sort, uniq, grep, tr 몇줄정도 수준일건데...tldextract 외부 프로그램을 이용하려면 filename 을 넣어야해요. 그리고 결과를 또 받아야 하지 않아요? 정영훈 2019.12.19 01:36
  • 음, 제가 입문한지 정말 얼마 되지 않아서요 .. 분명 더 효과적인 방법이 있을텐대, 우선 제가 아는 방식으로 처리를 하려고 한 부분이 위 부분이구요.. 위 본문의 코드를 실행하면 r.json() 으로 값을 받아오면 몇십~몇백줄정도 문자열을 가져 오는데, 제가 해당 부분에서 메인 도메인만 추출하고 싶은 부분이라서요, 알 수 없는 사용자 2019.12.19 01:48
  • 결국, 저는 같은 파이썬 파일에 있는 r.json() 을 subprocess.call모듈을 사용해서 정규식 표현을 하고싶은건데, 불가능 한건가요? 알 수 없는 사용자 2019.12.19 01:50

2 답변

  • requests 로 받아온 문자열이 있다는 가정하에 정규식으로 도메인만 추출후 중복제거, 정렬, . 제거를 했습니다.

    import re
    
    s = '''{'links': ['https://www.youtube.com/watch?v=4fp1-aT2fTM', 'https://www.youtube.com/watch?v=SB-qEYVdvXA',...''' # 길어서 자름
    
    matches = re.findall(r'https?://([A-Za-z_0-9.-]+.com)', s)    # 도메인만 추출하는 정규식
    print(f'matches: {matches}')
    
    # set 은 중복제거를 하는 집합입니다. sorted 는 중복제거된 도메인을 정렬합니다. 마지막으로 .을 제거합니다.
    result = [domain.translate(str.maketrans({'.':' '})) for domain in sorted(set(matches))]
    print(f'result: {result}')
    
    
    * matches: ['www.youtube.com', 'www.youtube.com', 'www.reddit.com', 'www.pinterest.com', 'www.pinterest.com', 'www.pinterest.com', 'scontent-sea1-1.cdninstagram.com', 'saveig.com', 'encrypted-tbn0.gstatic.com', 'i.pinimg.com', 'encrypted-tbn0.gstatic.com', 'www.reddit.com', 'encrypted-tbn0.gstatic.com', 'i.pinimg.com', 'www.pinterest.com', 'encrypted-tbn0.gstatic.com', '78.media.tumblr.com', 'tumblrgallery.com', 'encrypted-tbn0.gstatic.com', 'i.pinimg.com', 'gr.pinterest.com', 'encrypted-tbn0.gstatic.com', 'scontent-atl3-1.cdninstagram.com', 'encrypted-tbn0.gstatic.com', 'data.whicdn.com', 'weheartit.com', 'encrypted-tbn0.gstatic.com', 'scontent-lhr3-1.cdninstagram.com', 'encrypted-tbn0.gstatic.com', 'i.pinimg.com', 'encrypted-tbn0.gstatic.com', 'scontent-otp1-1.cdninstagram.com', 'encrypted-tbn0.gstatic.com', 'scontent-frt3-2.cdninstagram.com', 'encrypted-tbn0.gstatic.com', 'scontent-sin2-1.cdninstagram.com', 'saveig.com', 'encrypted-tbn0.gstatic.com', 'kucingpersiaku77.com', 'petshopqu.blogspot.com', 'encrypted-tbn0.gstatic.com', 'pbs.twimg.com', 'twitter.com', 'encrypted-tbn0.gstatic.com', 'encrypted-tbn0.gstatic.com', 'pbs.twimg.com', 'twitter.com', 'encrypted-tbn0.gstatic.com', 'data.whicdn.com', 'weartit.com', 'encrypted-tbn0.gstatic.com', 'i.pinimg.com', 'www.pinterest.com', 'encrypted-tbn0.gstatic.com', 'lookaside.fbsbx.com', 'www.facebook.com', 'encrypted-tbn0.gstatic.com']
    * result: ['78 media tumblr com', 'data whicdn com', 'encrypted-tbn0 gstatic com', 'gr pinterest com', 'i pinimg com', 'kucingpersiaku77 com', 'lookaside fbsbx com', 'pbs twimg com', 'petshopqu blogspot com', 'saveig com', 'scontent-atl3-1 cdninstagram com', 'scontent-frt3-2 cdninstagram com', 'scontent-lhr3-1 cdninstagram com', 'scontent-otp1-1 cdninstagram com', 'scontent-sea1-1 cdninstagram com', 'scontent-sin2-1 cdninstagram com', 'tumblrgallery com', 'twitter com', 'weartit com', 'weheartit com', 'www facebook com', 'www pinterest com', 'www reddit com', 'www youtube com']
    
    • 늦은시간까지 정말 여러모로 도와주셔서 감사합니다. 알 수 없는 사용자 2019.12.19 15:07
    • 제가 한가지 여쭤보고싶은게 있는데요, 제 코드상 r.json() 으로 JSON파일 데이터를 받아오는건 확인이 되는데, 이 부분의 데이터를 같은 파이썬 프로그램에서 사용할수는 없는건가요? 예를들면, 제가 원하는 파이썬 프로세스는 STEP1. 원하는 URL 로 부터 r.json()으로 데이터(string)를 습득 STEP2. 받아온 데이터(string)를 토대로 정규식 표현 인데요, 우선 r.json()으로 데이터(string)를 습득한 부분을 별도의 텍스트 파일 등으로 만든 후 정규식 표현을 진행을 해야 하나요? 알 수 없는 사용자 2019.12.19 15:11
    • s 가 json 으로 받아온 string이라는 가정하에 작성한거에요. s를 정규식 적용하여 도메인만 추출한거구요. 정영훈 2019.12.19 20:43
  • 하기의 코드를 테스트 해보세요. json 은 tldextract 에서 인식안하는 것 같네요.

    방법이라면 json 에서 url 만 추출해서 하나로 문자열로 만들어서 수행하는 방법도 있겠습니다만...개인적으로는 비추네요.

    s = 'www.naver.com www.yahoo.com'
    import subprocess
    
    subprocess.call(f'tldextract {s} | sort | uniq | grep .com | tr -d .', shell=True)
    
    # 리턴값을 받으려면...
    result = subprocess.check_output(f'tldextract {s} | sort | uniq | grep .com | tr -d .', shell=True)
    print(result)
    
    
    • 네, 우선 시도해 보겠습니다. 알 수 없는 사용자 2019.12.19 02:04
    • 늦은밤 여러모로 도움주셔서 감사합니다. 알 수 없는 사용자 2019.12.19 02:04
    • 추천하는 방법은 json 을 파싱해서 url 만 추출하여 .com 인것만 filtering 하여 set 에 저장후 sort 하고 . 을 제거하는식이 나을 듯 합니다. 정영훈 2019.12.19 02:07
    • 유효한 json 도 아니네요. json 은 "(double quotes) 을 사용해야 합니다. 정영훈 2019.12.19 02:31

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)