James Porter
James Porter

Reputation: 119

Splitting a string with a range in python

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

Answers (3)

Eric Jensen
Eric Jensen

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

Stephen Rauch
Stephen Rauch

Reputation: 49812

What you are looking for is rsplit():

Code:

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

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

Results:

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

Upvotes: 2

user8098055
user8098055

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

Related Questions