【问题标题】:Python Regular Expression problem with ""“”的Python正则表达式问题
【发布时间】:2020-03-14 17:50:37
【问题描述】:

我有一个类似的字符串:

['"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 和 level 并将其转换为 DataFrame,例如:

x_id  level

123    0
234    1
456    NAN 

我在 python 中使用 re 但我无法得到结果。 这是我的代码:

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))

【问题讨论】:

  • 请在发布后查看您的帖子,以便您修复任何标记错误。显然有。您显示的代码 看起来 就像它实际上是完全正常的 JSON 字符串,在这种情况下,您不使用 re,您使用来自 the json packageloads 函数来处理每个字符串,然后从提供给您的完全正常的 Python 字典中获取数据。
  • 至少在你要求其他人的时间之前尝试解决你的问题。 How to Ask
  • 我已将我的代码添加到问题中

标签: regex python-3.x string dataframe


【解决方案1】:

您可以使用 pandas 的 str.extract() 方法,该方法将正则表达式作为参数并默认应用于 Series 的每个元素:

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

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 2014-11-29
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多