在python中拆分带有范围的字符串

时间:2018-01-23 08:54:18

标签: python split

我有一个包含类似以下行的文件:

[<data_type0>,<data_type1>] name(data)
"DATA_VALUE0"|"DATA_VALUE1" name(data)

我希望将每一行分成两行。第一部分介于&#39;&lt;&#39;之间。和&#39;&gt;&#39; &#39; [&#39;和&#39;]&#39;或&#34;和&#34;。

因此,所需拆分的输出将是:

valueA[0] = [data_type0,data_type1]
valueA[1] = [name(data)]

valueB[0] = [DATA_VALUE0,DATA_VALUE1]
valueB[1] = [name(data)]

一个障碍是数据值的长度未知,因此有些行可以读取:

<date_type0> name(data)

和其他人可能是:

<data_type0>,<data_type1>,<data_type2>...<data_type8> name(data)

任何想法如何?

3 个答案:

答案 0 :(得分:2)

看起来您可以拆分空间

>>> data = """[<data_type0>,<data_type1>] name(data)
... "DATA_VALUE0"|"DATA_VALUE1" name(data)"""
>>> for line in data.split("\n"):
...     print(line.split())
... 
['[<data_type0>,<data_type1>]', 'name(data)']
['"DATA_VALUE0"|"DATA_VALUE1"', 'name(data)']

答案 1 :(得分:2)

您要找的是rsplit()

代码:

lines = (
    '"[ < data_type0 >, < data_type1 >] name(data)',
    '"DATA_VALUE0" | "DATA_VALUE1" name(data)',
)

for line in lines:
    print(line.rsplit(' ', 1))

结果:

['"[ < data_type0 >, < data_type1 >]', 'name(data)']
['"DATA_VALUE0" | "DATA_VALUE1"', 'name(data)']

答案 2 :(得分:0)

还有一种通用的方法来查找字符串中的东西并将它们分开。

a = '<data_1>,<data_2> name(data)'
division = a.find('name(')
b = a[:division-1]
c = a[division:]

结果:

>>> b
'<data_1>,<data_2>'
>>> c
'name(data)'