字符串拆分python

时间:2016-06-01 19:18:19

标签: python scripting

我正在尝试解析文件并在python中拆分行。目前我可以解析文件并将其加载到列表中。

我试图取每一行并用括号分割它,

'datediff(varchar(30),timestamp(3),timestamp(3))'
reverse(text)
checkcluster(int,int,int,int,int)
declaredown(int)

我试图在函数中提取参数:

['varchar(30),timestamp(3),timestamp(3)','text','int,int,int,int,int','int']

然而,我得到的结果是:

['varchar(30', 'text', 'int,int,int,int,int', 'int']

我相信它因为varchar中的括号。 有没有办法将它分开,只是第一次出现和最后一次出现括号?

1 个答案:

答案 0 :(得分:3)

  

有没有办法将它除以第一次出现和最后一次出现的括号?

是的,请使用partitionrpartition

>>> s = 'datediff(varchar(30),timestamp(3),timestamp(3))'
>>> s.partition("(")
('datediff', '(', 'varchar(30),timestamp(3),timestamp(3))')
>>> s.partition("(")[2]
'varchar(30),timestamp(3),timestamp(3))'
>>> s.partition("(")[2].rpartition(")")
('varchar(30),timestamp(3),timestamp(3)', ')', '')
>>> s.partition("(")[2].rpartition(")")[0]
'varchar(30),timestamp(3),timestamp(3)'

>>> def extract(s):
...     return s.partition("(")[2].rpartition(")")[0]
...
>>> print(extract('datediff(varchar(30),timestamp(3),timestamp(3))'))
varchar(30),timestamp(3),timestamp(3)
>>> print(extract('reverse(text)'))
text
>>> print(extract('checkcluster(int,int,int,int,int)'))
int,int,int,int,int
>>> print(extract('declaredown(int)'))
int