Reputation: 119
I have a file which contains something similar to the following lines:
[<data_type0>,<data_type1>] name(data)
"DATA_VALUE0"|"DATA_VALUE1" name(data)
I am looking to split each line into two. The first part being between either the '<' and '>' the '[' and ']' or " and ".
So the output from the desired split would be something like:
valueA[0] = [data_type0,data_type1]
valueA[1] = [name(data)]
valueB[0] = [DATA_VALUE0,DATA_VALUE1]
valueB[1] = [name(data)]
One snag is that the data values are of an unknown length, so some lines could read:
<date_type0> name(data)
and others could be:
<data_type0>,<data_type1>,<data_type2>...<data_type8> name(data)
Any ideas how?
Upvotes: 2
Views: 5399
Reputation: 303
There is also a general approach to finding stuff in strings and breaking them apart.
a = '<data_1>,<data_2> name(data)'
division = a.find('name(')
b = a[:division-1]
c = a[division:]
Results:
>>> b
'<data_1>,<data_2>'
>>> c
'name(data)'
Upvotes: 0
Reputation: 49812
What you are looking for is 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)']
Upvotes: 2
Reputation:
It looks like you could just split on a space .
>>> 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)']
Upvotes: 2