返回新行(Flask)上的每个列表元素

时间:2016-07-03 04:48:47

标签: python flask

这是当前的输出: http://puu.sh/pOsKt/4e4ab1f316.png

我希望每行输出1个地址+ gps坐标。我假设我的代码中的最后一行可以实现,但它无法正常工作。

我的代码:

from flask import Flask, request
from geopy.geocoders import Bing
from geopy.exc import GeocoderTimedOut
import re

patterns = [" st", "street", "ave", "avenue", "plz", "ctr", "park", "pl", " plaza ", "way", "grn", "sq", "ln", "dr",
            "ct", "oval", "vlg", "blvd", "boulevard", " ter", "pkwy", "rd", "row", "hwy", "americas", "broadway"]
geolocator = Bing(
    '...')

app = Flask(__name__)


@app.route("/")
def index():
    return """<form action="/clean" method="POST"><textarea rows="4" cols="50"
          name="addresses">Enter addresses here...</textarea>
          <p><input type="submit"></p> </form>"""


@app.route("/clean", methods=['POST'])
def dothing():
    addresses = request.form['addresses']
    return cleanAddress(addresses)


def cleanAddress(addresses):
    addresses = addresses.split('\n')
    cleaned = []

    for address in addresses:

        address = address.lower()
        address = re.sub('[^A-Za-z0-9]+', ' ', address).lstrip()
        address = re.sub(re.compile(r'^[^0-9]*'), '', address).lstrip()
        if 'plz' in address:
            address = address.replace('plz', 'plaza ', 1)
        if 'hstreet' in address:
            address = address.replace('hstreet', 'h street')
        if 'dstreet' in address:
            address = address.replace('dstreet', 'd street')
        if 'hst' in address:
            address = address.replace('hst', 'h st')
        if 'dst' in address:
            address = address.replace('dst', 'd st')
        if 'have' in address:
            address = address.replace('have', 'h ave')
        if 'dave' in address:
            address = address.replace('dave', 'd ave')
        if 'havenue' in address:
            address = address.replace('havenue', 'h avenue')
        if 'davenue' in address:
            address = address.replace('davenue', 'd avenue')
        regex = r'(.*)(' + '|'.join(patterns) + r')(.*)'
        address = re.sub(regex, r'\1\2', address).lstrip() + " nyc"

        try:
            clean = geolocator.geocode(address)
            x = clean.address
            address, city, zipcode, country = x.split(",")
            address = address.lower()
            if 'first' in address:
                address = address.replace('first', '1st')
            elif 'second' in address:
                address = address.replace('second', '2nd')
            elif 'third' in address:
                address = address.replace('third', '3rd')
            elif 'fourth' in address:
                address = address.replace('fourth', '4th')
            elif 'fifth' in address:
                address = address.replace('fifth', '5th')
            elif ' sixth a' in address:
                address = address.replace('ave', '')
                address = address.replace('avenue', '')
                address = address.replace(' sixth', ' avenue of the americas')
            elif ' 6th a' in address:
                address = address.replace('ave', '')
                address = address.replace('avenue', '')
                address = address.replace(' 6th', ' avenue of the americas')
            elif 'seventh' in address:
                address = address.replace('seventh', '7th')
            elif 'fashion' in address:
                address = address.replace('fashion', '7th')
            elif 'eighth' in address:
                address = address.replace('eighth', '8th')
            elif 'ninth' in address:
                address = address.replace('ninth', '9th')
            elif 'tenth' in address:
                address = address.replace('tenth', '10th')
            elif 'eleventh' in address:
                address = address.replace('eleventh', '11th')
            zipcode = zipcode[3:]
            cleaned.append((str(address) + ", " + str(zipcode.lstrip()) +
                            ", " + str(clean.latitude) + ", " + str(clean.longitude)))
        except (AttributeError, ValueError, GeocoderTimedOut):
            print('Can not be cleaned')

    return "\n".join(cleaned)


if __name__ == "__main__":
    app.run(debug=True)

1 个答案:

答案 0 :(得分:0)

要在HTML中创建新行,您需要使用display:block styled elements or the <br/> tag。每个主要浏览器都会为每个<p>元素添加display:block属性,因此这可能是最简单的事情。

这样的事情:

<p>501 10th ave, 100018, ...</p>
<p>1 times square, 100036, ...</p>