Python Проблема регулярного выражения с "" - PullRequest
0 голосов
/ 14 марта 2020

У меня есть строка вроде:

['"country":"UK","email":"abc@vip.com","x_id":123,"level":0',
'"country":"UK","email":"bcd@vip.com","x_id":234,"level":1',
'"country":"UK","email":"efg@vip.com","x_id":456']

Я хочу получить x_id и уровень и превратить его в DataFrame, например:

x_id  level

123    0
234    1
456    NAN 

Я использую re в python но я не могу получить результат. Вот мой код:

data_raw=['"country":"UK","email":"abc@vip.com","x_id":123,"level":0','"country":"UK","email":"bcd@vip.com","x_id":234,"level":1',
'"country":"UK","email":"efg@vip.com","x_id":456]
data=pd.DataFrame(data_raw)
data['x_id']=data.apply(lambda x:re.search(r'(\"x_id\":)\d{1-10}',x))

1 Ответ

1 голос
/ 14 марта 2020

Вы можете использовать метод pandas 'str.extract(), который принимает регулярные выражения в качестве аргументов и по умолчанию применяется к каждому отдельному элементу серии:

import pandas as pd

data_raw = ['"country":"UK","email":"abc@vip.com","x_id":123,"level":0',
            '"country":"UK","email":"bcd@vip.com","x_id":234,"level":1',
            '"country":"UK","email":"efg@vip.com","x_id":456']
data = pd.Series(data_raw)

x_id = data.str.extract('"x_id":(\d*)')
level = data.str.extract('"level":(\d*)')

results = pd.concat([x_id, level], axis=1)
results.columns = ['x_id', 'level']
display(results)

Вывод:

    x_id    level
0   123     0
1   234     1
2   456     NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...