1
If your input is always going to formatted in exactly this way, using str.split()
is preferable. If you want something slightly more resilient, here’s a regex approach, using re.VERBOSE
and re.DOTALL
:
import re
desc_match = re.search(r'''(?sx)
(?P<loc>Location:.+?)[\n\r]
(?P<time>Time:.+?)[\n\r]
(?P<vends>Vendors:.+?)(?:\n\r?){2}''', desc)
if desc_match:
for gname in ['loc', 'time', 'vends']:
print desc_match.group(gname)
Given your definition of desc
, this prints out:
Location: 5th St. @ Minna St.
Time: 11:00am-2:00pm
Vendors:
Kasa Indian
Fiveten Burger
Hiyaaa
The Rib Whip
Mayo & Mustard
Efficiency really doesn’t matter here because the time is going to be negligible either way (don’t optimize unless there is a bottleneck.) And again, this is only “nicer” if it works more often than your solution using str.split()
– that is, if there are any possible input strings for which your solution does not produce the correct result.
If you only want the values, just move the prefixes outside of the group definitions (a group is defined by (?P<group_name>...)
)
r'''(?sx)
Location: \s* (?P<loc>.+?) [n\r]
Time: \s* (?P<time>.+?) [\n\r]
Vendors: \s* (?P<vends>.+?) (?:\n\r?){2}'''
1
NLNL = "\r\n\r\n"
parts = s.split(NLNL)
result = NLNL.join(parts[1:3])
print(result)
which gives
Location: 5th St. @ Minna St.
Time: 11:00am-2:00pm
Vendors:
Kasa Indian
Fiveten Burger
Hiyaaa
The Rib Whip
Mayo & Mustard
- [Answered ]-Django executing backward relation query occurred a maximum recursion depth exceeded error when I use Manager
- [Answered ]-Extends tag with Django
- [Answered ]-Django URL explanation
- [Answered ]-Writable nested Django serializer with string instead of dict
- [Answered ]-Django-pipeline wipes out my entries in Django Database Cache
Source:stackexchange.com