【发布时间】:2018-12-21 19:50:41
【问题描述】:
我有一个如下所示的输入字符串。我想根据逗号将其解析为如下所示的输出。问题是有时括号内包含逗号,如下例所示,引号内也包含引号。我对正则表达式匹配不太方便,因此非常感谢任何提示。
输入:
"ty_event_name, from_unixtime(unix_timestamp(regexp_replace(ty_date,'/','-'),'MM-dd-yyyy'),'yyyy-MM-dd') as ty_date,'${hiveconf:run_dt}' as sessions_fy,orders_xy"
输出:
{1:'ty_event_name',
2:'from_unixtime(unix_timestamp(regexp_replace(ty_date,'/','-'),'MM-dd-yyyy'),'yyyy-MM-dd') as ty_date',
3:''${hiveconf:run_dt}' as sessions_fy',
4:'orders_xy'}
试过了:
import pandas as pd
import numpy as np
import re
teststr="ty_event_name, from_unixtime(unix_timestamp(regexp_replace(ty_date,'/','-'),'MM-dd-yyyy'),'yyyy-MM-dd') as ty_date,'${hiveconf:run_dt}' as sessions_fy,orders_xy"
tstr=re.sub('(?!\B"[^"]*),(?![^"]*"\B)',',',teststr).split()
tstr
输出:
['ty_event_name,',
"from_unixtime(unix_timestamp(regexp_replace(ty_date,'/','-'),'MM-dd-yyyy'),'yyyy-MM-dd')",
'as',
"ty_date,'${hiveconf:run_dt}'",
'as',
'sessions_fy,orders_xy']
【问题讨论】:
-
请向我们展示您的尝试,以便我们根据您在此过程中所处的位置调整我们的答案。对代码的请求往往不会吸引很多高质量的答案。如果您包含更多上下文,通常会更快地获得您正在寻找的内容,尤其是您已经尝试过的代码,并解释了它为什么不适合您的需求。
-
@Nick 我添加了更新以使输入的格式更清晰,并根据您的建议添加了一些我尝试过的评论。我认为这与您的建议不完全相同,因为问题不仅仅是引号。主要问题是用括号外的逗号分隔字符串。
标签: regex python-3.x pandas numpy