<p>@scito提交的答案足够了,但我只是以防万一。
您可以使用regex,下面是一个工作示例:</p>
<pre><code>strng = """
AMAZON
IPHONE: 700
SAMSUNG: 600
=============
WALMART
IPHONE: 699
===========
ALIBABA
SONY: 500
======
"""
multistrng = strng.split("\n") # get each line seperated by \n
import re
market_re = re.compile('([a-zA-Z]+)') # regex to find market name
phone_re = re.compile(r"([a-zA-Z]+):\s(\d+)") # regex to find phone and its price
js = [] # list to hold all data found
for line in multistrng:
phone = phone_re.findall(line) # if line contains phone and its price
if phone:
js[-1].append(phone[0]) # add phone to recently found marketplace
continue
market = market_re.findall(line)
if market: # if line contains market place name
js.append([market[0]])
continue
else:
continue # empty lines ignore
# now you have the data in structured manner, you can print or add it to the database
for market in js:
for product in market[1:]:
print(" -")
print("{} | {} | {}".format(market[0], product[0], product[1]))
print(" -")
</code></pre>
<p>输出:</p>
<pre><code> -
AMAZON | IPHONE | 700
-
AMAZON | SAMSUNG | 600
-
WALMART | IPHONE | 699
-
ALIBABA | SONY | 500
-
</code></pre>
<p>数据存储在js列表中,若迭代js,子列表中的第一个元素是market place,其余元素是该market place的产品</p>
<pre><code>[['AMAZON', ('IPHONE', '700'), ('SAMSUNG', '600')], ['WALMART', ('IPHONE', '699')], ['ALIBABA', ('SONY', '500')]]
</code></pre>