Whitespace test after string.split

D

David Pratt

Hi. I am splitting a string on a non whitespace character. One or more
whitespace characters can be returned as items in the list. I do not
want the items in the list that are only whitespace (can be one or more
characters of whitespace) and plan to use string.strip on those items
that are not only whitespace (to remove any whitespace from front or
back of items).

What kind of efficient test can I use to obtain only list items
returned from the split that I am interested in, ignoring any list
items that would only be comprised of one or more characters of
whitespace (since whitespace can mean one or more spaces, tabs, and
other characters)

As a second question, I am seeing string split as deprecated in 2.4.2
manual. What is planned in future to split (strings or unicode)?

Regards,
David
 
P

Peter Otten

David said:
Hi. I am splitting a string on a non whitespace character. One or more
whitespace characters can be returned as items in the list. I do not
want the items in the list that are only whitespace (can be one or more
characters of whitespace) and plan to use string.strip on those items
that are not only whitespace (to remove any whitespace from front or
back of items).

What kind of efficient test can I use to obtain only list items
returned from the split that I am interested in, ignoring any list
items that would only be comprised of one or more characters of
whitespace (since whitespace can mean one or more spaces, tabs, and
other characters)
s = "alpha, \t\n, gamma, delta,"
s.split(",") ['alpha', ' \t\n', ' gamma', ' delta', '']
[t for t in s.split(",") if not t.isspace()] ['alpha', ' gamma', ' delta', '']
[t for t in s.split(",") if t and not t.isspace()] ['alpha', ' gamma', ' delta']
[t.strip() for t in s.split(",") if t and not t.isspace()]
['alpha', 'gamma', 'delta']

There you are.
As a second question, I am seeing string split as deprecated in 2.4.2
manual. What is planned in future to split (strings or unicode)?

Just use the corresponding methods, e. g. s.strip() instead of
string.strip(s) etc.

Peter
 
B

Bengt Richter

David said:
Hi. I am splitting a string on a non whitespace character. One or more
whitespace characters can be returned as items in the list. I do not
want the items in the list that are only whitespace (can be one or more
characters of whitespace) and plan to use string.strip on those items
that are not only whitespace (to remove any whitespace from front or
back of items).

What kind of efficient test can I use to obtain only list items
returned from the split that I am interested in, ignoring any list
items that would only be comprised of one or more characters of
whitespace (since whitespace can mean one or more spaces, tabs, and
other characters)
s = "alpha, \t\n, gamma, delta,"
s.split(",") ['alpha', ' \t\n', ' gamma', ' delta', '']
[t for t in s.split(",") if not t.isspace()] ['alpha', ' gamma', ' delta', '']
[t for t in s.split(",") if t and not t.isspace()] ['alpha', ' gamma', ' delta']
[t.strip() for t in s.split(",") if t and not t.isspace()]
['alpha', 'gamma', 'delta']

There you are.
Alternatively, possibly
>>> [t for t in (t.strip() for t in s.split(",")) if t]
['alpha', 'gamma', 'delta']
Just use the corresponding methods, e. g. s.strip() instead of
string.strip(s) etc.

Peter

Regards,
Bengt Richter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top