import string
import re
import unicodedata
import sys

patterns = {
    '[àáảãạăắằẵặẳâầấậẫẩ]': 'a',
    '[đ]': 'd',
    '[èéẻẽẹêềếểễệ]': 'e',
    '[ìíỉĩị]': 'i',
    '[òóỏõọôồốổỗộơờớởỡợ]': 'o',
    '[ùúủũụưừứửữự]': 'u',
    '[ỳýỷỹỵ]': 'y'
}


def remove_accent(text):
    """
    Convert from 'Tieng Viet co dau' thanh 'Tieng Viet khong dau'
    :param text: input string to be converted
    :return Return: string converted
    """
    output = text
    for regex, replace in patterns.items():
        output = re.sub(regex, replace, output)
        # deal with upper case
        output = re.sub(regex.upper(), replace.upper(), output)
    return output


# Detect Province Dictionary
# provinceList = ["An Giang",
#                 "Ba Ria - Vung Tau",
#                 "Bac Giang",
#                 "Bac Kan",
#                 "Bac Lieu",
#                 "Bac Ninh",
#                 "Ben Tre",
#                 "Binh Dinh",
#                 "Binh Duong",
#                 "Binh Phuoc",
#                 "Binh Thuan",
#                 "Ca Mau",
#                 "Cao Bang",
#                 "Dak Lak",
#                 "Dak Nong",
#                 "Dien Bien",
#                 "Dong Nai",
#                 "Dong Thap",
#                 "Gia Lai",
#                 "Ha Giang",
#                 "Ha Nam",
#                 "Ha Tinh",
#                 "Hai Duong",
#                 "Hau Giang",
#                 "Hoa Binh",
#                 "Hung Yen",
#                 "Khanh Hoa",
#                 "Kien Giang",
#                 "Kon Tum",
#                 "Lai Chau",
#                 "Lam Dong",
#                 "Lang Son",
#                 "Lao Cai",
#                 "Long An",
#                 "Nam Dinh",
#                 "Nghe An",
#                 "Ninh Binh",
#                 "Ninh Thuan",
#                 "Phu Tho",
#                 "Quang Binh",
#                 "Quang Nam",
#                 "Quang Ngai",
#                 "Quang Ninh",
#                 "Quang Tri",
#                 "Soc Trang",
#                 "Son La",
#                 "Tay Ninh",
#                 "Thai Binh",
#                 "Thai Nguyen",
#                 "Thanh Hoa",
#                 "Thua Thien Hue",
#                 "Tien Giang",
#                 "Tra Vinh",
#                 "Tuyen Quang",
#                 "Vinh Long",
#                 "Vinh Phuc",
#                 "Yen Bai",
#                 "Phu Yen",
#                 "Can Tho",
#                 "Da Nang",
#                 "Hai Phong",
#                 "Ha Noi",
#                 "Ho Chi Minh"]

provinceList = ["An Giang",
                "Bà Rịa - Vũng Tàu",
                "Bắc Giang",
                "Bắc Kạn",
                "Bắc Liêu",
                "Bắc Ninh",
                "Bến Tre",
                "Bình Định",
                "Bình Dương",
                "Bình Phước",
                "Bình Thuận",
                "Cà Mau",
                "Cao Bằng",
                "Đăk Lăk",
                "Đăk Nông",
                "Điên Biên",
                "Đồng Nai",
                "Đồng Tháp",
                "Gia Lai",
                "Hà Giang",
                "Hà Nam",
                "Hà Tĩnh",
                "Hải Dương",
                "Hậu Giang",
                "Hòa Bình",
                "Hưng Yên",
                "Khánh Hòa",
                "Kiên Giang",
                "Kon Tum",
                "Lai Châu",
                "Lâm Đồng",
                "Lạng Sơn",
                "Lào Cai",
                "Long An",
                "Nam Định",
                "Nghệ An",
                "Ninh Bình",
                "Ninh Thuận",
                "Phú Thọ",
                "Quảng Bình",
                "Quảng Nam",
                "Quảng Ngãi",
                "Quảng Ninh",
                "Quảng Tri",
                "Sóc Trăng",
                "Sơn La",
                "Tây Ninh",
                "Thái Bình",
                "Thái Nguyên",
                "Thanh Hóa",
                "Thừa Thiên Huế",
                "Tiền Giang",
                "Trà Vinh",
                "Tuyên Quang",
                "Vĩnh Long",
                "Vĩnh Phúc",
                "Yên Bái",
                "Phú Yên",
                "Cần Thơ",
                "Đà Nẵng",
                "Hải Phòng",
                "Hà Nội",
                "Hồ Chí Minh"]

# Detect City Dictionary
# cityList = [["Long Xuyen", "An Giang"],
#             ["Vung Tau", "Ba Ria - Vung Tau"],
#             ["Ba Ria", "Ba Ria - Vung Tau"],
#             ["Thu Dau Mot", "Binh Duong"],
#             ["Dong Xoai", "Binh Phuoc"],
#             ["Phan Thiet", "Binh Thuan"],
#             ["Quy Nhon", "Binh Dinh"],
#             ["Bac Lieu", "Bac Lieu"],
#             ["Bac Giang", "Bac Giang"],
#             ["Bac Kan", "Bac Kan"],
#             ["Bac Ninh", "Bac Ninh"],
#             ["Ben Tre", "Ben Tre"],
#             ["Cao Bang", "Cao Bang"],
#             ["Ca Mau", "Ca Mau"],
#             ["Can Tho", "Can Tho"],
#             ["Pleiku", "Gia Lai"],
#             ["Ha Giang", "Ha Giang"],
#             ["Phu Ly", "Ha Nam"],
#             ["Ha Noi", "Ha Noi"],
#             ["Ha Tinh", "Ha Tinh"],
#             ["Bien Hoa", "Dong Nai"],
#             ["Hoa Binh", "Hoa Binh"],
#             ["Hung Yen", "Hung Yen"],
#             ["Hai Duong", "Hai Duong"],
#             ["Hai Phong", "Hai Phong"],
#             ["Vi Thanh", "Hau Giang"],
#             ["Nha Trang", "Khanh Hoa"],
#             ["Rach Gia", "Kien Giang"],
#             ["Kon Tum", "Kon Tum"],
#             ["Lai Chau", "Lai Chau"],
#             ["Tan An", "Long An"],
#             ["Lao Cai", "Lao Cai"],
#             ["Da Lat", "Lam Dong"],
#             ["Lang Son", "Lang Son"],
#             ["Nam Dinh", "Nam Dinh"],
#             ["Tra Vinh", "Tra Vinh"],
#             ["Vinh", "Nghe An"],
#             ["Ninh Binh", "Ninh Binh"],
#             ["Phan Rang – Thap Cham", "Ninh Thuan"],
#             ["Phan Rang", "Ninh Thuan"],
#             ["Viet Tri", "Phu Tho"],
#             ["Tuy Hoa", "Phu Yen"],
#             ["Dong Hoi", "Quang Binh"],
#             ["Tam Ky", "Quang Nam"],
#             ["Quang Ngai", "Quang Ngai"],
#             ["Ha Long", "Quang Ninh"],
#             ["Dong Ha", "Quang Tri"],
#             ["Soc Trang", "Soc Trang"],
#             ["Son La", "Son La"],
#             ["Thanh Hoa", "Thanh Hoa"],
#             ["Thai Binh", "Thai Binh"],
#             ["Thai Nguyen", "Thai Nguyen"],
#             ["Hue", "Thua Thien Hue"],
#             ["My Tho", "Tien Giang"],
#             ["HCM", "Ho Chi Minh"],
#             ["Ho Chi Minh", "Ho Chi Minh"],
#             ["Tuyen Quang", "Tuyen Quang"],
#             ["Tay Ninh", "Tay Ninh"],
#             ["Vinh Long", "Vinh Long"],
#             ["Vinh Yen", "Vinh Phuc"],
#             ["Yen Bai", "Yen Bai"],
#             ["Da Nang", "Da Nang"],
#             ["Dien Bien Phu", "Dien Bien"],
#             ["Buon Ma Thuot", "Dak Lak"],
#             ["Gia Nghia", "Dak Nong"],
#             ["Cao Lanh", "Dong Thap"]]


# District in Ho Chi Minh City Dictionary
# districtListHCM = [["q10", "Quan 10"],
#                    ["q 10", "Quan 10"],
#                    ["q\.10", "Quan 10"],
#                    ["q\. 10", "Quan 10"],
#                    ["quan 10", "Quan 10"],
#                    ["quan\.10", "Quan 10"],
#                    ["quan\. 10", "Quan 10"],
#                    ["q11", "Quan 11"],
#                    ["q 11", "Quan 11"],
#                    ["q\.11", "Quan 11"],
#                    ["q\. 11", "Quan 11"],
#                    ["quan 11", "Quan 11"],
#                    ["quan\.11", "Quan 11"],
#                    ["quan\. 11", "Quan 11"],
#                    ["q12", "Quan 12"],
#                    ["q 12", "Quan 12"],
#                    ["q\.12", "Quan 12"],
#                    ["q\. 12", "Quan 12"],
#                    ["quan 12", "Quan 12"],
#                    ["quan\.12", "Quan 12"],
#                    ["quan\. 12", "Quan 12"],
#                    ["q1", "Quan 1"],
#                    ["q 1", "Quan 1"],
#                    ["q\.1", "Quan 1"],
#                    ["q\. 1", "Quan 1"],
#                    ["quan 1", "Quan 1"],
#                    ["quan\.1", "Quan 1"],
#                    ["quan\. 1", "Quan 1"],
#                    ["q2", "Quan 2"],
#                    ["q 2", "Quan 2"],
#                    ["q\.2", "Quan 2"],
#                    ["q\. 2", "Quan 2"],
#                    ["quan 2", "Quan 2"],
#                    ["quan\.2", "Quan 2"],
#                    ["quan\. 2", "Quan 2"],
#                    ["q3", "Quan 3"],
#                    ["q 3", "Quan 3"],
#                    ["q\.3", "Quan 3"],
#                    ["q\. 3", "Quan 3"],
#                    ["quan 3", "Quan 3"],
#                    ["quan\.3", "Quan 3"],
#                    ["quan\. 3", "Quan 3"],
#                    ["q4", "Quan 4"],
#                    ["q 4", "Quan 4"],
#                    ["q\.4", "Quan 4"],
#                    ["q\. 4", "Quan 4"],
#                    ["quan 4", "Quan 4"],
#                    ["quan\.4", "Quan 4"],
#                    ["quan\. 4", "Quan 4"],
#                    ["q5", "Quan 5"],
#                    ["q 5", "Quan 5"],
#                    ["q\.5", "Quan 5"],
#                    ["q\. 5", "Quan 5"],
#                    ["quan 5", "Quan 5"],
#                    ["quan\.5", "Quan 5"],
#                    ["quan\. 5", "Quan 5"],
#                    ["q6", "Quan 6"],
#                    ["q 6", "Quan 6"],
#                    ["q\.6", "Quan 6"],
#                    ["q\. 6", "Quan 6"],
#                    ["quan 6", "Quan 6"],
#                    ["quan\.6", "Quan 6"],
#                    ["quan\. 6", "Quan 6"],
#                    ["q7", "Quan 7"],
#                    ["q 7", "Quan 7"],
#                    ["q\.7", "Quan 7"],
#                    ["q\. 7", "Quan 7"],
#                    ["quan 7", "Quan 7"],
#                    ["quan\.7", "Quan 7"],
#                    ["quan\. 7", "Quan 7"],
#                    ["q8", "Quan 8"],
#                    ["q 8", "Quan 8"],
#                    ["q\.8", "Quan 8"],
#                    ["q\. 8", "Quan 8"],
#                    ["quan 8", "Quan 8"],
#                    ["quan\.8", "Quan 8"],
#                    ["quan\. 8", "Quan 8"],
#                    ["q9", "Quan 9"],
#                    ["q 9", "Quan 9"],
#                    ["q\.9", "Quan 9"],
#                    ["q\. 9", "Quan 9"],
#                    ["quan 9", "Quan 9"],
#                    ["quan\.9", "Quan 9"],
#                    ["quan\. 9", "Quan 9"],
#                    ["GV", "Quan Go Vap"],
#                    ["Go Vap", "Quan Go Vap"],
#                    ["qGo Vap", "Quan Go Vap"],
#                    ["qGV", "Quan Go Vap"],
#                    ["q Go Vap", "Quan Go Vap"],
#                    ["q GV", "Quan Go Vap"],
#                    ["q\.Go Vap", "Quan Go Vap"],
#                    ["q\.Gv", "Quan Go Vap"],
#                    ["q\. Go Vap", "Quan Go Vap"],
#                    ["q\. GV", "Quan Go Vap"],
#                    ["quan Go Vap", "Quan Go Vap"],
#                    ["quan Gv", "Quan Go Vap"],
#                    ["quan\.Go Vap", "Quan Go Vap"],
#                    ["quan\.Gv", "Quan Go Vap"],
#                    ["quan\. Go Vap", "Quan Go Vap"],
#                    ["quan\. Gv", "Quan Go Vap"],
#                    ["BT", "Quan Binh Thanh"],
#                    ["Binh Thanh", "Quan Binh Thanh"],
#                    ["qBinh Thanh", "Quan Binh Thanh"],
#                    ["qBT", "Quan Binh Thanh"],
#                    ["q Binh Thanh", "Quan Binh Thanh"],
#                    ["q BT", "Quan Binh Thanh"],
#                    ["q\.Binh Thanh", "Quan Binh Thanh"],
#                    ["q\.BT", "Quan Binh Thanh"],
#                    ["q\. Binh Thanh", "Quan Binh Thanh"],
#                    ["q\. BT", "Quan Binh Thanh"],
#                    ["quan Binh Thanh", "Quan Binh Thanh"],
#                    ["quan BT", "Quan Binh Thanh"],
#                    ["quan\.Binh Thanh", "Quan Binh Thanh"],
#                    ["quan\.BT", "Quan Binh Thanh"],
#                    ["quan\. Binh Thanh", "Quan Binh Thanh"],
#                    ["quan\. BT", "Quan Binh Thanh"],
#                    ["Binh Tan", "Quan Binh Tan"],
#                    ["BT", "Quan Binh Tan"],
#                    ["qBinh Tan", "Quan Binh Tan"],
#                    ["qBT", "Quan Binh Tan"],
#                    ["q Binh Tan", "Quan Binh Tan"],
#                    ["q BT", "Quan Binh Tan"],
#                    ["q\.Binh Tan", "Quan Binh Tan"],
#                    ["q\.BT", "Quan Binh Tan"],
#                    ["q\. Binh Tan", "Quan Binh Tan"],
#                    ["q\. BT", "Quan Binh Tan"],
#                    ["quan Binh Tan", "Quan Binh Tan"],
#                    ["quan BT", "Quan Binh Tan"],
#                    ["quan\.Binh Tan", "Quan Binh Tan"],
#                    ["quan\.BT", "Quan Binh Tan"],
#                    ["quan\. Binh Tan", "Quan Binh Tan"],
#                    ["quan\. BT", "Quan Binh Tan"],
#                    ["Tan Binh", "Quan Tan Binh"],
#                    ["qTan Binh", "Quan Tan Binh"],
#                    ["q Tan Binh", "Quan Tan Binh"],
#                    ["q\.Tan Binh", "Quan Tan Binh"],
#                    ["q\. Tan Binh", "Quan Tan Binh"],
#                    ["quan Tan Binh", "Quan Tan Binh"],
#                    ["quan\.Tan Binh", "Quan Tan Binh"],
#                    ["quan\. Tan Binh", "Quan Tan Binh"],
#                    ["PN", "Quan Phu Nhuan"],
#                    ["qPN", "Quan Phu Nhuan"],
#                    ["q PN", "Quan Phu Nhuan"],
#                    ["q\.PN", "Quan Phu Nhuan"],
#                    ["q\. PN", "Quan Phu Nhuan"],
#                    ["quan PN", "Quan Phu Nhuan"],
#                    ["quan\.PN", "Quan Phu Nhuan"],
#                    ["quan\. PN", "Quan Phu Nhuan"],
#                    ["Phu Nhuan", "Quan Phu Nhuan"],
#                    ["qPhu Nhuan", "Quan Phu Nhuan"],
#                    ["q Phu Nhuan", "Quan Phu Nhuan"],
#                    ["q\.Phu Nhuan", "Quan Phu Nhuan"],
#                    ["q\. Phu Nhuan", "Quan Phu Nhuan"],
#                    ["quan Phu Nhuan", "Quan Phu Nhuan"],
#                    ["quan\.Phu Nhuan", "Quan Phu Nhuan"],
#                    ["quan\. Phu Nhuan", "Quan Phu Nhuan"],
#                    ["PN", "Quan Phu Nhuan"],
#                    ["qPN", "Quan Phu Nhuan"],
#                    ["q PN", "Quan Phu Nhuan"],
#                    ["q\.PN", "Quan Phu Nhuan"],
#                    ["q\. PN", "Quan Phu Nhuan"],
#                    ["quan PN", "Quan Phu Nhuan"],
#                    ["quan\.PN", "Quan Phu Nhuan"],
#                    ["quan\. PN", "Quan Phu Nhuan"],
#                    ["Tan Phu", "Quan Tan Phu"],
#                    ["qTan Phu", "Quan Tan Phu"],
#                    ["q Tan Phu", "Quan Tan Phu"],
#                    ["q\.Tan Phu", "Quan Tan Phu"],
#                    ["q\. Tan Phu", "Quan Tan Phu"],
#                    ["quan Tan Phu", "Quan Tan Phu"],
#                    ["quan\.Tan Phu", "Quan Tan Phu"],
#                    ["quan\. Tan Phu", "Quan Tan Phu"],
#                    # ["TP", "Quan Tan Phu"],
#                    ["qTP", "Quan Tan Phu"],
#                    ["q TP", "Quan Tan Phu"],
#                    ["q\.TP", "Quan Tan Phu"],
#                    ["q\. TP", "Quan Tan Phu"],
#                    ["quan TP", "Quan Tan Phu"],
#                    ["quan\.TP", "Quan Tan Phu"],
#                    ["quan\. TP", "Quan Tan Phu"],
#                    ["Nha Be", "Huyen Nha Be"],
#                    ["qNha Be", "Huyen Nha Be"],
#                    ["q Nha Be", "Huyen Nha Be"],
#                    ["q\.Nha Be", "Huyen Nha Be"],
#                    ["q\. Nha Be", "Huyen Nha Be"],
#                    ["quan Nha Be", "Huyen Nha Be"],
#                    ["quan\.Nha Be", "Huyen Nha Be"],
#                    ["quan\. Nha Be", "Huyen Nha Be"],
#                    ["Nha Be", "Huyen Nha Be"],
#                    ["hNha Be", "Huyen Nha Be"],
#                    ["h Nha Be", "Huyen Nha Be"],
#                    ["h\.Nha Be", "Huyen Nha Be"],
#                    ["h\. Nha Be", "Huyen Nha Be"],
#                    ["quan Nha Be", "Huyen Nha Be"],
#                    ["huyen\.Nha Be", "Huyen Nha Be"],
#                    ["huyen\. Nha Be", "Huyen Nha Be"],
#                    ["NB", "Huyen Nha Be"],
#                    ["qNB", "Huyen Nha Be"],
#                    ["q NB", "Huyen Nha Be"],
#                    ["q\.NB", "Huyen Nha Be"],
#                    ["q\. NB", "Huyen Nha Be"],
#                    ["quan NB", "Huyen Nha Be"],
#                    ["quan\.NB", "Huyen Nha Be"],
#                    ["quan\. NB", "Huyen Nha Be"],
#                    ["NB", "Huyen Nha Be"],
#                    ["hNB", "Huyen Nha Be"],
#                    ["h NB", "Huyen Nha Be"],
#                    ["h\.NB", "Huyen Nha Be"],
#                    ["h\. NB", "Huyen Nha Be"],
#                    ["huyen NB", "Huyen Nha Be"],
#                    ["huyen\.NB", "Huyen Nha Be"],
#                    ["huyen\. NB", "Huyen Nha Be"],
#                    ["Thu Duc", "Quan Thu Duc"],
#                    ["qThu Duc", "Quan Thu Duc"],
#                    ["q Thu Duc", "Quan Thu Duc"],
#                    ["q\.Thu Duc", "Quan Thu Duc"],
#                    ["q\. Thu Duc", "Quan Thu Duc"],
#                    ["quan Thu Duc", "Quan Thu Duc"],
#                    ["quan\.Thu Duc", "Quan Thu Duc"],
#                    ["quan\. Thu Duc", "Quan Thu Duc"],
#                    ["TD", "Quan Thu Duc"],
#                    ["qTD", "Quan Thu Duc"],
#                    ["q TD", "Quan Thu Duc"],
#                    ["q\.TD", "Quan Thu Duc"],
#                    ["q\. TD", "Quan Thu Duc"],
#                    ["quan TD", "Quan Thu Duc"],
#                    ["quan\.TD", "Quan Thu Duc"],
#                    ["quan\. TD", "Quan Thu Duc"],
#                    ["Binh Chanh", "Huyen Binh Chanh"],
#                    ["qBinh Chanh", "Huyen Binh Chanh"],
#                    ["q Binh Chanh", "Huyen Binh Chanh"],
#                    ["q\.Binh Chanh", "Huyen Binh Chanh"],
#                    ["q\. Binh Chanh", "Huyen Binh Chanh"],
#                    ["quan Binh Chanh", "Huyen Binh Chanh"],
#                    ["quan\.Binh Chanh", "Huyen Binh Chanh"],
#                    ["quan\. Binh Chanh", "Huyen Binh Chanh"],
#                    ["Binh Chanh", "Huyen Binh Chanh"],
#                    ["hBinh Chanh", "Huyen Binh Chanh"],
#                    ["h Binh Chanh", "Huyen Binh Chanh"],
#                    ["h\.Binh Chanh", "Huyen Binh Chanh"],
#                    ["h\. Binh Chanh", "Huyen Binh Chanh"],
#                    ["huyen Binh Chanh", "Huyen Binh Chanh"],
#                    ["huyen\.Binh Chanh", "Huyen Binh Chanh"],
#                    ["huyen\. Binh Chanh", "Huyen Binh Chanh"],
#                    ["BC", "Huyen Binh Chanh"],
#                    ["qBC", "Huyen Binh Chanh"],
#                    ["q BC", "Huyen Binh Chanh"],
#                    ["q\.BC", "Huyen Binh Chanh"],
#                    ["q\. BC", "Huyen Binh Chanh"],
#                    ["quan BC", "Huyen Binh Chanh"],
#                    ["quan\.BC", "Huyen Binh Chanh"],
#                    ["quan\. BC", "Huyen Binh Chanh"],
#                    ["BC", "Huyen Binh Chanh"],
#                    ["hBC", "Huyen Binh Chanh"],
#                    ["h BC", "Huyen Binh Chanh"],
#                    ["h\.BC", "Huyen Binh Chanh"],
#                    ["h\. BC", "Huyen Binh Chanh"],
#                    ["huyen BC", "Huyen Binh Chanh"],
#                    ["huyen\.BC", "Huyen Binh Chanh"],
#                    ["huyen\. BC", "Huyen Binh Chanh"],
#                    ["Binh Chanh", "Huyen Binh Chanh"],
#                    ["qBinh Chanh", "Huyen Binh Chanh"],
#                    ["q Binh Chanh", "Huyen Binh Chanh"],
#                    ["q\.Binh Chanh", "Huyen Binh Chanh"],
#                    ["q\. Binh Chanh", "Huyen Binh Chanh"],
#                    ["quan Binh Chanh", "Huyen Binh Chanh"],
#                    ["quan\.Binh Chanh", "Huyen Binh Chanh"],
#                    ["quan\. Binh Chanh", "Huyen Binh Chanh"],
#                    ["Cu Chi", "Huyen Cu Chi"],
#                    ["hCu Chi", "Huyen Cu Chi"],
#                    ["h Cu Chi", "Huyen Cu Chi"],
#                    ["h\.Cu Chi", "Huyen Cu Chi"],
#                    ["h\. Cu Chi", "Huyen Cu Chi"],
#                    ["huyen Cu Chi", "Huyen Cu Chi"],
#                    ["huyen\.Cu Chi", "Huyen Cu Chi"],
#                    ["huyen\. Cu Chi", "Huyen Cu Chi"],
#                    ["CC", "Huyen Cu Chi"],
#                    ["qCC", "Huyen Cu Chi"],
#                    ["q CC", "Huyen Cu Chi"],
#                    ["q\.CC", "Huyen Cu Chi"],
#                    ["q\. CC", "Huyen Cu Chi"],
#                    ["quan CC", "Huyen Cu Chi"],
#                    ["quan\.CC", "Huyen Cu Chi"],
#                    ["quan\. CC", "Huyen Cu Chi"],
#                    ["CC", "Huyen Cu Chi"],
#                    ["hCC", "Huyen Cu Chi"],
#                    ["h CC", "Huyen Cu Chi"],
#                    ["h\.CC", "Huyen Cu Chi"],
#                    ["h\. CC", "Huyen Cu Chi"],
#                    ["huyen CC", "Huyen Cu Chi"],
#                    ["huyen\.CC", "Huyen Cu Chi"],
#                    ["huyen\. CC", "Huyen Cu Chi"],
#                    ["Hoc Mon", "Huyen Hoc Mon"],
#                    ["hHoc Mon", "Huyen Hoc Mon"],
#                    ["h Hoc Mon", "Huyen Hoc Mon"],
#                    ["h\.Hoc Mon", "Huyen Hoc Mon"],
#                    ["h\. Hoc Mon", "Huyen Hoc Mon"],
#                    ["huyen Hoc Mon", "Huyen Hoc Mon"],
#                    ["huyen\.Hoc Mon", "Huyen Hoc Mon"],
#                    ["huyen\. Hoc Mon", "Huyen Hoc Mon"],
#                    ["HM", "Huyen Hoc Mon"],
#                    ["qHM", "Huyen Hoc Mon"],
#                    ["q HM", "Huyen Hoc Mon"],
#                    ["q\.HM", "Huyen Hoc Mon"],
#                    ["q\. HM", "Huyen Hoc Mon"],
#                    ["quan HM", "Huyen Hoc Mon"],
#                    ["quan\.HM", "Huyen Hoc Mon"],
#                    ["quan\. HM", "Huyen Hoc Mon"],
#                    ["HM", "Huyen Hoc Mon"],
#                    ["hHM", "Huyen Hoc Mon"],
#                    ["h HM", "Huyen Hoc Mon"],
#                    ["h\.HM", "Huyen Hoc Mon"],
#                    ["h\. HM", "Huyen Hoc Mon"],
#                    ["huyen HM", "Huyen Hoc Mon"],
#                    ["huyen\.HM", "Huyen Hoc Mon"],
#                    ["huyen\. HM", "Huyen Hoc Mon"]]
districtListHCM = [["q10", "Quận 10"],
                   ["q 10", "Quận 10"],
                   ["q\.10", "Quận 10"],
                   ["q\. 10", "Quận 10"],
                   ["quan 10", "Quận 10"],
                   ["quan\.10", "Quận 10"],
                   ["quan\. 10", "Quận 10"],
                   ["q11", "Quận 11"],
                   ["q 11", "Quận 11"],
                   ["q\.11", "Quận 11"],
                   ["q\. 11", "Quận 11"],
                   ["quan 11", "Quận 11"],
                   ["quan\.11", "Quận 11"],
                   ["quan\. 11", "Quận 11"],
                   ["q12", "Quận 12"],
                   ["q 12", "Quận 12"],
                   ["q\.12", "Quận 12"],
                   ["q\. 12", "Quận 12"],
                   ["quan 12", "Quận 12"],
                   ["quan\.12", "Quận 12"],
                   ["quan\. 12", "Quận 12"],
                   ["q1", "Quận 1"],
                   ["q 1", "Quận 1"],
                   ["q\.1", "Quận 1"],
                   ["q\. 1", "Quận 1"],
                   ["quan 1", "Quận 1"],
                   ["quan\.1", "Quận 1"],
                   ["quan\. 1", "Quận 1"],
                   ["q2", "Quận 2"],
                   ["q 2", "Quận 2"],
                   ["q\.2", "Quận 2"],
                   ["q\. 2", "Quận 2"],
                   ["quan 2", "Quận 2"],
                   ["quan\.2", "Quận 2"],
                   ["quan\. 2", "Quận 2"],
                   ["q3", "Quận 3"],
                   ["q 3", "Quận 3"],
                   ["q\.3", "Quận 3"],
                   ["q\. 3", "Quận 3"],
                   ["quan 3", "Quận 3"],
                   ["quan\.3", "Quận 3"],
                   ["quan\. 3", "Quận 3"],
                   ["q4", "Quận 4"],
                   ["q 4", "Quận 4"],
                   ["q\.4", "Quận 4"],
                   ["q\. 4", "Quận 4"],
                   ["quan 4", "Quận 4"],
                   ["quan\.4", "Quận 4"],
                   ["quan\. 4", "Quận 4"],
                   ["q5", "Quận 5"],
                   ["q 5", "Quận 5"],
                   ["q\.5", "Quận 5"],
                   ["q\. 5", "Quận 5"],
                   ["quan 5", "Quận 5"],
                   ["quan\.5", "Quận 5"],
                   ["quan\. 5", "Quận 5"],
                   ["q6", "Quận 6"],
                   ["q 6", "Quận 6"],
                   ["q\.6", "Quận 6"],
                   ["q\. 6", "Quận 6"],
                   ["quan 6", "Quận 6"],
                   ["quan\.6", "Quận 6"],
                   ["quan\. 6", "Quận 6"],
                   ["q7", "Quận 7"],
                   ["q 7", "Quận 7"],
                   ["q\.7", "Quận 7"],
                   ["q\. 7", "Quận 7"],
                   ["quan 7", "Quận 7"],
                   ["quan\.7", "Quận 7"],
                   ["quan\. 7", "Quận 7"],
                   ["q8", "Quận 8"],
                   ["q 8", "Quận 8"],
                   ["q\.8", "Quận 8"],
                   ["q\. 8", "Quận 8"],
                   ["quan 8", "Quận 8"],
                   ["quan\.8", "Quận 8"],
                   ["quan\. 8", "Quận 8"],
                   ["q9", "Quận 9"],
                   ["q 9", "Quận 9"],
                   ["q\.9", "Quận 9"],
                   ["q\. 9", "Quận 9"],
                   ["quan 9", "Quận 9"],
                   ["quan\.9", "Quận 9"],
                   ["quan\. 9", "Quận 9"],
                   ["GV", "Quận Gò Vấp"],
                   ["Go Vap", "Quận Gò Vấp"],
                   ["qGo Vap", "Quận Gò Vấp"],
                   ["qGV", "Quận Gò Vấp"],
                   ["q Go Vap", "Quận Gò Vấp"],
                   ["q GV", "Quận Gò Vấp"],
                   ["q\.Go Vap", "Quận Gò Vấp"],
                   ["q\.Gv", "Quận Gò Vấp"],
                   ["q\. Go Vap", "Quận Gò Vấp"],
                   ["q\. GV", "Quận Gò Vấp"],
                   ["quan Go Vap", "Quận Gò Vấp"],
                   ["quan Gv", "Quận Gò Vấp"],
                   ["quan\.Go Vap", "Quận Gò Vấp"],
                   ["quan\.Gv", "Quận Gò Vấp"],
                   ["quan\. Go Vap", "Quận Gò Vấp"],
                   ["quan\. Gv", "Quận Gò Vấp"],
                   ["BT", "Quận Bình Thạnh"],
                   ["Binh Thanh", "Quận Bình Thạnh"],
                   ["qBinh Thanh", "Quận Bình Thạnh"],
                   ["qBT", "Quận Bình Thạnh"],
                   ["q Binh Thanh", "Quận Bình Thạnh"],
                   ["q BT", "Quận Bình Thạnh"],
                   ["q\.Binh Thanh", "Quận Bình Thạnh"],
                   ["q\.BT", "Quận Bình Thạnh"],
                   ["q\. Binh Thanh", "Quận Bình Thạnh"],
                   ["q\. BT", "Quận Bình Thạnh"],
                   ["quan Binh Thanh", "Quận Bình Thạnh"],
                   ["quan BT", "Quận Bình Thạnh"],
                   ["quan\.Binh Thanh", "Quận Bình Thạnh"],
                   ["quan\.BT", "Quận Bình Thạnh"],
                   ["quan\. Binh Thanh", "Quận Bình Thạnh"],
                   ["quan\. BT", "Quận Bình Thạnh"],
                   ["Binh Tan", "Quận Bình Tân"],
                   ["BT", "Quận Bình Tân"],
                   ["qBinh Tan", "Quận Bình Tân"],
                   ["qBT", "Quận Bình Tân"],
                   ["q Binh Tan", "Quận Bình Tân"],
                   ["q BT", "Quận Bình Tân"],
                   ["q\.Binh Tan", "Quận Bình Tân"],
                   ["q\.BT", "Quận Bình Tân"],
                   ["q\. Binh Tan", "Quận Bình Tân"],
                   ["q\. BT", "Quận Bình Tân"],
                   ["quan Binh Tan", "Quận Bình Tân"],
                   ["quan BT", "Quận Bình Tân"],
                   ["quan\.Binh Tan", "Quận Bình Tân"],
                   ["quan\.BT", "Quận Bình Tân"],
                   ["quan\. Binh Tan", "Quận Bình Tân"],
                   ["quan\. BT", "Quận Bình Tân"],
                   ["Tan Binh", "Quận Tân Bình"],
                   ["qTan Binh", "Quận Tân Bình"],
                   ["q Tan Binh", "Quận Tân Bình"],
                   ["q\.Tan Binh", "Quận Tân Bình"],
                   ["q\. Tan Binh", "Quận Tân Bình"],
                   ["quan Tan Binh", "Quận Tân Bình"],
                   ["quan\.Tan Binh", "Quận Tân Bình"],
                   ["quan\. Tan Binh", "Quận Tân Bình"],
                   ["PN", "Quận Phú Nhuận"],
                   ["qPN", "Quận Phú Nhuận"],
                   ["q PN", "Quận Phú Nhuận"],
                   ["q\.PN", "Quận Phú Nhuận"],
                   ["q\. PN", "Quận Phú Nhuận"],
                   ["quan PN", "Quận Phú Nhuận"],
                   ["quan\.PN", "Quận Phú Nhuận"],
                   ["quan\. PN", "Quận Phú Nhuận"],
                   ["Phu Nhuan", "Quận Phú Nhuận"],
                   ["qPhu Nhuan", "Quận Phú Nhuận"],
                   ["q Phu Nhuan", "Quận Phú Nhuận"],
                   ["q\.Phu Nhuan", "Quận Phú Nhuận"],
                   ["q\. Phu Nhuan", "Quận Phú Nhuận"],
                   ["quan Phu Nhuan", "Quận Phú Nhuận"],
                   ["quan\.Phu Nhuan", "Quận Phú Nhuận"],
                   ["quan\. Phu Nhuan", "Quận Phú Nhuận"],
                   ["PN", "Quận Phú Nhuận"],
                   ["qPN", "Quận Phú Nhuận"],
                   ["q PN", "Quận Phú Nhuận"],
                   ["q\.PN", "Quận Phú Nhuận"],
                   ["q\. PN", "Quận Phú Nhuận"],
                   ["quan PN", "Quận Phú Nhuận"],
                   ["quan\.PN", "Quận Phú Nhuận"],
                   ["quan\. PN", "Quận Phú Nhuận"],
                   ["Tan Phu", "Quận Tân Phú"],
                   ["qTan Phu", "Quận Tân Phú"],
                   ["q Tan Phu", "Quận Tân Phú"],
                   ["q\.Tan Phu", "Quận Tân Phú"],
                   ["q\. Tan Phu", "Quận Tân Phú"],
                   ["quan Tan Phu", "Quận Tân Phú"],
                   ["quan\.Tan Phu", "Quận Tân Phú"],
                   ["quan\. Tan Phu", "Quận Tân Phú"],
                   # ["TP", "Quận Tân Phú"],
                   ["qTP", "Quận Tân Phú"],
                   ["q TP", "Quận Tân Phú"],
                   ["q\.TP", "Quận Tân Phú"],
                   ["q\. TP", "Quận Tân Phú"],
                   ["quan TP", "Quận Tân Phú"],
                   ["quan\.TP", "Quận Tân Phú"],
                   ["quan\. TP", "Quận Tân Phú"],
                   ["Nha Be", "Huyện Nhà Bè"],
                   ["qNha Be", "Huyện Nhà Bè"],
                   ["q Nha Be", "Huyện Nhà Bè"],
                   ["q\.Nha Be", "Huyện Nhà Bè"],
                   ["q\. Nha Be", "Huyện Nhà Bè"],
                   ["quan Nha Be", "Huyện Nhà Bè"],
                   ["quan\.Nha Be", "Huyện Nhà Bè"],
                   ["quan\. Nha Be", "Huyện Nhà Bè"],
                   ["Nha Be", "Huyện Nhà Bè"],
                   ["hNha Be", "Huyện Nhà Bè"],
                   ["h Nha Be", "Huyện Nhà Bè"],
                   ["h\.Nha Be", "Huyện Nhà Bè"],
                   ["h\. Nha Be", "Huyện Nhà Bè"],
                   ["quan Nha Be", "Huyện Nhà Bè"],
                   ["huyen\.Nha Be", "Huyện Nhà Bè"],
                   ["huyen\. Nha Be", "Huyện Nhà Bè"],
                   ["NB", "Huyện Nhà Bè"],
                   ["qNB", "Huyện Nhà Bè"],
                   ["q NB", "Huyện Nhà Bè"],
                   ["q\.NB", "Huyện Nhà Bè"],
                   ["q\. NB", "Huyện Nhà Bè"],
                   ["quan NB", "Huyện Nhà Bè"],
                   ["quan\.NB", "Huyện Nhà Bè"],
                   ["quan\. NB", "Huyện Nhà Bè"],
                   ["NB", "Huyện Nhà Bè"],
                   ["hNB", "Huyện Nhà Bè"],
                   ["h NB", "Huyện Nhà Bè"],
                   ["h\.NB", "Huyện Nhà Bè"],
                   ["h\. NB", "Huyện Nhà Bè"],
                   ["huyen NB", "Huyện Nhà Bè"],
                   ["huyen\.NB", "Huyện Nhà Bè"],
                   ["huyen\. NB", "Huyện Nhà Bè"],
                   ["Thu Duc", "Quận Thủ Đức"],
                   ["qThu Duc", "Quận Thủ Đức"],
                   ["q Thu Duc", "Quận Thủ Đức"],
                   ["q\.Thu Duc", "Quận Thủ Đức"],
                   ["q\. Thu Duc", "Quận Thủ Đức"],
                   ["quan Thu Duc", "Quận Thủ Đức"],
                   ["quan\.Thu Duc", "Quận Thủ Đức"],
                   ["quan\. Thu Duc", "Quận Thủ Đức"],
                   ["TD", "Quận Thủ Đức"],
                   ["qTD", "Quận Thủ Đức"],
                   ["q TD", "Quận Thủ Đức"],
                   ["q\.TD", "Quận Thủ Đức"],
                   ["q\. TD", "Quận Thủ Đức"],
                   ["quan TD", "Quận Thủ Đức"],
                   ["quan\.TD", "Quận Thủ Đức"],
                   ["quan\. TD", "Quận Thủ Đức"],
                   ["Binh Chanh", "Huyện Bình Chánh"],
                   ["qBinh Chanh", "Huyện Bình Chánh"],
                   ["q Binh Chanh", "Huyện Bình Chánh"],
                   ["q\.Binh Chanh", "Huyện Bình Chánh"],
                   ["q\. Binh Chanh", "Huyện Bình Chánh"],
                   ["quan Binh Chanh", "Huyện Bình Chánh"],
                   ["quan\.Binh Chanh", "Huyện Bình Chánh"],
                   ["quan\. Binh Chanh", "Huyện Bình Chánh"],
                   ["Binh Chanh", "Huyện Bình Chánh"],
                   ["hBinh Chanh", "Huyện Bình Chánh"],
                   ["h Binh Chanh", "Huyện Bình Chánh"],
                   ["h\.Binh Chanh", "Huyện Bình Chánh"],
                   ["h\. Binh Chanh", "Huyện Bình Chánh"],
                   ["huyen Binh Chanh", "Huyện Bình Chánh"],
                   ["huyen\.Binh Chanh", "Huyện Bình Chánh"],
                   ["huyen\. Binh Chanh", "Huyện Bình Chánh"],
                   ["BC", "Huyện Bình Chánh"],
                   ["qBC", "Huyện Bình Chánh"],
                   ["q BC", "Huyện Bình Chánh"],
                   ["q\.BC", "Huyện Bình Chánh"],
                   ["q\. BC", "Huyện Bình Chánh"],
                   ["quan BC", "Huyện Bình Chánh"],
                   ["quan\.BC", "Huyện Bình Chánh"],
                   ["quan\. BC", "Huyện Bình Chánh"],
                   ["BC", "Huyện Bình Chánh"],
                   ["hBC", "Huyện Bình Chánh"],
                   ["h BC", "Huyện Bình Chánh"],
                   ["h\.BC", "Huyện Bình Chánh"],
                   ["h\. BC", "Huyện Bình Chánh"],
                   ["huyen BC", "Huyện Bình Chánh"],
                   ["huyen\.BC", "Huyện Bình Chánh"],
                   ["huyen\. BC", "Huyện Bình Chánh"],
                   ["Binh Chanh", "Huyện Bình Chánh"],
                   ["qBinh Chanh", "Huyện Bình Chánh"],
                   ["q Binh Chanh", "Huyện Bình Chánh"],
                   ["q\.Binh Chanh", "Huyện Bình Chánh"],
                   ["q\. Binh Chanh", "Huyện Bình Chánh"],
                   ["quan Binh Chanh", "Huyện Bình Chánh"],
                   ["quan\.Binh Chanh", "Huyện Bình Chánh"],
                   ["quan\. Binh Chanh", "Huyện Bình Chánh"],
                   ["Cu Chi", "Huyện Củ Chi"],
                   ["hCu Chi", "Huyện Củ Chi"],
                   ["h Cu Chi", "Huyện Củ Chi"],
                   ["h\.Cu Chi", "Huyện Củ Chi"],
                   ["h\. Cu Chi", "Huyện Củ Chi"],
                   ["huyen Cu Chi", "Huyện Củ Chi"],
                   ["huyen\.Cu Chi", "Huyện Củ Chi"],
                   ["huyen\. Cu Chi", "Huyện Củ Chi"],
                   ["CC", "Huyện Củ Chi"],
                   ["qCC", "Huyện Củ Chi"],
                   ["q CC", "Huyện Củ Chi"],
                   ["q\.CC", "Huyện Củ Chi"],
                   ["q\. CC", "Huyện Củ Chi"],
                   ["quan CC", "Huyện Củ Chi"],
                   ["quan\.CC", "Huyện Củ Chi"],
                   ["quan\. CC", "Huyện Củ Chi"],
                   ["CC", "Huyện Củ Chi"],
                   ["hCC", "Huyện Củ Chi"],
                   ["h CC", "Huyện Củ Chi"],
                   ["h\.CC", "Huyện Củ Chi"],
                   ["h\. CC", "Huyện Củ Chi"],
                   ["huyen CC", "Huyện Củ Chi"],
                   ["huyen\.CC", "Huyện Củ Chi"],
                   ["huyen\. CC", "Huyện Củ Chi"],
                   ["Hoc Mon", "Huyện Hóc Môn"],
                   ["hHoc Mon", "Huyện Hóc Môn"],
                   ["h Hoc Mon", "Huyện Hóc Môn"],
                   ["h\.Hoc Mon", "Huyện Hóc Môn"],
                   ["h\. Hoc Mon", "Huyện Hóc Môn"],
                   ["huyen Hoc Mon", "Huyện Hóc Môn"],
                   ["huyen\.Hoc Mon", "Huyện Hóc Môn"],
                   ["huyen\. Hoc Mon", "Huyện Hóc Môn"],
                   ["HM", "Huyện Hóc Môn"],
                   ["qHM", "Huyện Hóc Môn"],
                   ["q HM", "Huyện Hóc Môn"],
                   ["q\.HM", "Huyện Hóc Môn"],
                   ["q\. HM", "Huyện Hóc Môn"],
                   ["quan HM", "Huyện Hóc Môn"],
                   ["quan\.HM", "Huyện Hóc Môn"],
                   ["quan\. HM", "Huyện Hóc Môn"],
                   ["HM", "Huyện Hóc Môn"],
                   ["hHM", "Huyện Hóc Môn"],
                   ["h HM", "Huyện Hóc Môn"],
                   ["h\.HM", "Huyện Hóc Môn"],
                   ["h\. HM", "Huyện Hóc Môn"],
                   ["huyen HM", "Huyện Hóc Môn"],
                   ["huyen\.HM", "Huyện Hóc Môn"],
                   ["huyen\. HM", "Huyện Hóc Môn"]]

cityList = [["Long Xuyên", "An Giang"],
            ["Vũng Tàu", "Bà Rịa - Vũng Tàu"],
            ["Bà Rịa", "Bà Rịa - Vũng Tàu"],
            ["Thủ Dầu Một", "Bình Dương"],
            ["Đồng Xoài", "Bình Phước"],
            ["Phan Thiết", "Bình Thuận"],
            ["Quy Nhơn", "Bình Định"],
            ["Bạc Liêu", "Bạc Liêu"],
            ["Bắc Giang", "Bắc Giang"],
            ["Bắc Kạn", "Bắc Kạn"],
            ["Bắc Ninh", "Bắc Ninh"],
            ["Bến Tre", "Bến Tre"],
            ["Cao Bằng", "Cao Bằng"],
            ["Cà Mau", "Cà Mau"],
            ["Cần Thơ", "Cần Thơ"],
            ["Pleiku", "Gia Lai"],
            ["Hà Giang", "Hà Giang"],
            ["Phú Lý", "Hà Nam"],
            ["Hà Nội", "Hà Nội"],
            ["Hà Tĩnh", "Hà Tinh"],
            ["Biên Hoà", "Đồng Nai"],
            ["Hòa Bình", "Hòa Bình"],
            ["Hưng Yên", "Hưng Yên"],
            ["Hải Dương", "Hải Dương"],
            ["Hải Phòng", "Hải Phòng"],
            ["Vị Thanh", "Hậu Giang"],
            ["Nha Trang", "Khánh Hòa"],
            ["Rạch Giá", "Kiên Giang"],
            ["Kon Tum", "Kon Tum"],
            ["Lai Châu", "Lai Châu"],
            ["Tân An", "Long An"],
            ["Lào Cai", "Lào Cai"],
            ["Đà Lạt", "Lâm Đồng"],
            ["Lạng Sơn", "Lạng Sơn"],
            ["Nam Định", "Nam Định"],
            ["Trà Vinh", "Trà Vinh"],
            ["Vinh", "Nghệ An"],
            ["Ninh Bình", "Ninh Bình"],
            ["Phan Rang – Tháp Chàm", "Ninh Thuận"],
            ["Phan Rang", "Ninh Thuận"],
            ["Việt Trì", "Phú Thọ"],
            ["Tuy Hoà", "Phú Yên"],
            ["Đồng Hội", "Quảng Bình"],
            ["Tam Kỳ", "Quảng Nam"],
            ["Quảng Ngãi", "Quảng Ngãi"],
            ["Hạ Long", "Quảng Ninh"],
            ["Đông Hà", "Quảng Trị"],
            ["Sóc Trăng", "Sóc Trăng"],
            ["Sơn La", "Sơn La"],
            ["Thanh Hóa", "Thanh Hóa"],
            ["Thái Bình", "Thái Bình"],
            ["Thái Nguyen", "Thái Nguyên"],
            ["Huế", "Thừa Thiên Huế"],
            ["Mỹ Tho", "Tiền Giang"],
            ["HCM", "Hồ Chí Minh"],
            ["Hồ Chí Minh", "Hồ Chí Minh"],
            ["Tuyên Quang", "Tuyên Quang"],
            ["Tây Ninh", "Tây Ninh"],
            ["Vĩnh Long", "Vĩnh Long"],
            ["Vĩnh Yên", "Vĩnh Phúc"],
            ["Yên Bái", "Yên Bái"],
            ["Đà Nẵng", "Đà Nẵng"],
            ["Điện Biên Phủ", "Điện Biên"],
            ["Buôn Ma Thuột", "Đăk Lăk"],
            ["Gia Nghĩa", "Đăk Nông"],
            ["Cao Lãnh", "Đồng Tháp"]]


def detect_province_index(address):
    """
    Detect province position in address
    :param address: raw text address
    :return: index
    """
    index = re.search("HCM", address, re.IGNORECASE)
    if index:
        return index.span()[0]
    for i in range(0, len(provinceList)):
        index = re.search(remove_accent(provinceList[i]), address, re.IGNORECASE)
        if index:
            # print("{0}\t{1}\t{2}".format(index.span()[0], index.span()[1], address))
            return index.span()[0]
    return -1


def detect_province(address):
    """
    Detect province in address
    :param address: raw text address
    :return: province detected in address
    """
    index = re.search("HCM", address, re.IGNORECASE)
    if index:
        return "Ho Chi Minh"
    for i in range(0, len(provinceList)):
        index = re.search(remove_accent(provinceList[i]), address, re.IGNORECASE)
        if index:
            return provinceList[i]
    return ""


def detect_city_index(address):
    """
    Detect city position in address
    :param address: raw address text
    :return: index
    """
    for i in range(0, len(cityList)):
        index = re.search(remove_accent(cityList[i][0]), address, re.IGNORECASE)
        indexConflict = re.search("xa lo ha noi", address, re.IGNORECASE)
        if (indexConflict is None) and index:
            # print("{0}\t{1}\t{2}".format(index.span()[0], index.span()[1], address))
            return index.span()[0]
    return -1


def detect_city(address):
    """
    Detect city name in address
    :param address: raw address text
    :return: city name
    """
    for i in range(0, len(cityList)):
        index = re.search(remove_accent(cityList[i][0]), address, re.IGNORECASE)
        indexConflict = re.search("xa lo ha noi", address, re.IGNORECASE)
        if (indexConflict is None) and index:
            return cityList[i][0]
    return ""


def city_province_mapping(city):
    """
    Mapping city to province
    :param city:
    :return:
    """
    for i in range(0, len(cityList)):
        if re.search(remove_accent(str(city)), remove_accent(cityList[i][0]), re.IGNORECASE):
            return cityList[i][1]
    return ""


def detect_district_index(address):
    for j in range(0, len(districtListHCM)):
        index = re.search(districtListHCM[j][0], address, re.IGNORECASE)
        if index:
            return index.span()[0]
    return -1


def detect_district(address):
    for j in range(0, len(districtListHCM)):
        index = re.search(districtListHCM[j][0], address, re.IGNORECASE)
        if index:
            return districtListHCM[j][1]
    return ""
