Форум сайта python.su
Парсю данные:
bb_strings = re.findall(r'var model = ({.*})', ad) bp = {} if bb_strings: bp = json.loads(bb_strings[0]) t = bp.get('AVAILABLE_SIZES') footlocker.append(('razmer', t)) print(footlocker)
Офлайн
exdedХотя здесь и вправду значения разделенные запятыми, вряд ли это можно назвать валидным csv-файлом (т.е. что обычно подразумевают под csv).
В csv файле у меня
one, two, three, four 'data11", "data12", "data13", "data14" 'data21", "data22", "data23", "data24" etc.
# Пусть у нас такой текст import re text = """ ['1'] ['1','32', '45']""" mypat = re.compile(r'''\[(['\d',\s\.]+)\]''') list(map(lambda x: x.strip().replace("'",'').split(","), mypat.findall(text)))
Отредактировано scidam (Март 28, 2017 02:08:34)
Офлайн
scidamу меня и так получается json
bb_strings = re.findall(r'var model = ({.*})', ad) print(bb_strings)
['{"ALLSKUS":["5447A"],"NBR":"224559","PRICERANGE":"$143.99","GENDER_AGE":"Men\'s","PRICEADJUSTDATE":"","AVAILABLE_SIZES":[" 09.0"],"DISCOUNT_PERCENT":"15","isFieldTestable":false,"SORT":"1318","HASCUSTOMPRODUCTTEMPLATE":false,"PR_LIST":"169.99","SPORTS":[{"ID":"39","NM":"Casual"}],"SIZECHART_CD":"S0629","HASSIZES":true,"PR_SALE":"143.99","LOCALIZATION":{},"MODELTEMPLATE":{"ISMODELTEMPLATEACTIVE":"N","MODELTEMPLATE_IMAGE":""},"ISCUSTOMPRODUCT":false,"INTRODUCTIONDATE":"","SKU":"5447A","ISINTANGIBLE":false,"PROD_TP":"Shoes","CUSTPROD_CD":"","NM":"Timberland Britton Hill Chukka - Men\'s","REVIEWS":{"HASREVIEWS":true,"TOTALREVIEWCOUNT":"3","WEIGHTEDAVERAGERATING":"4.33","WEIGHTEDAVERAGERECOMMENDED":"3"},"BRAND":"Timberland","INET_COPY":"<p>Showcase your style and stay comfortable with the Timberland Britton Hill Chukka boot.<\\/p> <ul> <li>Premium smooth and printed full grain leather upper from an LWG Silver-rated tannery provides durability.<\\/li> <li>100% organic cotton laces.<\\/li> <li>Removable anti-fatigue footbed features soft leather from an LWG Silver-rated tannery and 100% recycled PET herringbone lining for comfort.<\\/li> <li>EVA midsole for all-day comfort, lightweight cushioning and shock absorption.<\\/li> <li>Rugged Green Rubber™ (42% recycled rubber) outsole for durability.<\\/li> <li>SensorFlex technology delivers underfoot support, independent suspension, and greater flexibility for the ultimate smooth ride over any terrain.<\\/li> <\\/ul>"}']
bb_strings = re.findall(r'var model = ({.*})', ad) bp = {} if bb_strings: bp = json.loads(bb_strings[0]) for bl in bp['AVAILABLE_SIZES']: footlocker.append(('размер', bl))
Отредактировано exded (Март 28, 2017 08:55:45)
Офлайн
Если я правильно все понял, то вопрос в том, как сделать пустые ячейки. Пустые ячейки получаются, если сохранять DataFrame c null-данными в ячейках…
>>> main_data = pd.DataFrame(pd.np.array([[1,2,3],['bob', 'john', 'taylor'], [1.2,3,4]]).T, columns=['price','name', 'amount']) >>> tojoin = [[1], [2,3,4,5], [2,3]] # Это список размеров для соответствующих строк данных >>> maxsize=max(map(lambda x: len(x), tojoin)) >>> prepared = list(map(lambda x: x + [pd.np.nan]*(maxsize-len(x)), tojoin)) # Дополним список пустыми значениями >>> tojoindf = pd.DataFrame(prepared, columns=len(prepared[0])*['Размер']) # Создадим новый DF.. >>> main_data.join(tojoindf) # Присоединим данные размеров к основным данным price name amount Размер Размер Размер Размер 0 1 bob 1.2 1 NaN NaN NaN 1 2 john 3 2 3.0 4.0 5.0 2 3 taylor 4 2 3.0 NaN NaN >>> main_data.join(tojoindf).to_csv('output.csv') # сохраним в csv файл output.csv
Офлайн