盘点python工具包并优化pip下载加速

盘点python工具包并优化pip下载加速1、优化pip下载加速2、vscode使用安装环境python3、python相关工具包与方法3.1、Bilibili.com(B站)数据下载工具包开源地址:https://github.com/wolfbolin/BiliUtil安装命令:pipinstallBi

大家好,又见面了,我是你们的朋友全栈君。

1、优化pip下载加速

windows环境配置如下:

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com

windows配置:

在这里插入图片描述

2、vscode使用安装环境python

在这里插入图片描述

3、python相关工具包与方法

3.1、Bilibili.com(B站)数据下载工具包

开源地址:https://github.com/wolfbolin/BiliUtil
安装命令:pip install BiliUtil

3.2、mysql监控

开源地址:https://github.com/Neeky/mysqltools-python
安装命令:pip3 install mysqltools-python

3.3、无模型中文 NLP 工具包

开源地址:https://github.com/dongrixinyu/JioNLP

安装命令:

$ git clone https://github.com/dongrixinyu/JioNLP
$ cd ./JioNLP
$ pip install 

3.4、游戏开发相关的各类工具

开源地址:https://github.com/jasonxiong/GameTool

1、ConvertTool:供策划excel配置转表使用,主要包括配置转换和相关结构代码的生成;
2、GMTool: 游戏GM工具,方便测试人员和开发人员调使用;
3、PressTool: 游戏压力测试工具,通过模拟机器人发包对服务器进行压力测试;

3.5、一个易用的、快速的restful-api接口工具包

开源地址:https://github.com/pcloth/api-shop

安装命令:pip install api-shop

3.6、日期

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
import datetime

"""
日期工具
"""

def get_current_date():
    """获取今日日期
    格式: '20171213'
    """
    return time.strftime("%Y%m%d")

def get_current_timestamp():
    """获取当前时间戳
    格式: 1524032735404
    """
    return int(round(time.time() * 1000))

def get_current_time():
    """获取当前时间
    :return: 时间类型
    """
    return datetime.datetime.now()


def weekofmonth(date):
    """当前天是当月中的第几周
    :param date:
    :return:第几周
    """
    end=int(date.strftime('%W'))
    start=int(datetime.datetime(date.year,date.month,1).strftime('%W'))
    return end-start

def formatTime(timestamp):
    """格式化时间戳
    格式: 2017-12-13 16:32:30
    """
    time_local = time.localtime(timestamp / 1000)
    return time.strftime("%Y-%m-%d %H:%M:%S", time_local)

def get_time():
    """获取当前时间
    => 格式: '2017-12-13 16:32:30'
    """
    return datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

def get_time_before(days=0,hours=0,minutes=0,seconds=0,microseconds=0):
    """获取时间偏移数据
    :param days:
    :param hours:
    :param minutes:
    :param seconds:
    :param microseconds:
    :return: 获取当前时间戳=> 格式: '2017-12-13 16:32:30'
    """
    res = datetime.datetime.now() - datetime.timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds, microseconds=microseconds)
    return res


if __name__ == '__main__':
    print(weekofmonth(get_time_before()))

3.7、过滤特殊符号或者敏感词

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re
from utils import log_util


logger = log_util.logger("", loggerName="filter logger")

emoji_dict = { 
   u"[doge]":u"?",u"[喵喵]":u"?",u"[二哈]":u"?",u"[笑哭]":u"?",u"[跪了]":u"?",u"[打脸]":u"?",u"[笑cry]":u"?",u"[摊手]":u"╮(╯▽╰)╭",u"[污]":u"?",u"[抱抱]":u"?",u"[坏笑]":u"?",u"[舔屏]":u"?",u"[嘻嘻]":u"?️",u"[哈哈]":u"?",u"[可爱]":u"?",u"[微笑]":u"?",u"[吃惊]":u"?",u"[害羞]":u"☺️",u"[挤眼]":u"?",u"[闭嘴]":u"?",u"[鄙视]":u"?",u"[爱你]":u"?",u"[鲜花]":u"?",u"[草泥马]":u"?",u"[小黄人高兴]":u"?",u"[泪]":u"?",u"[亲亲]":u"?",u"[生病]":u"?",u"[太开心]":u"?",u"[白眼]":u"?",u"[右哼哼]":u"?",u"[左哼哼]":u"?",u"[衰]":u"?",u"[委屈]":u"?",u"[哈欠]":u"?",u"[抱抱_旧]":u"?",u"[怒]":u"?",u"[疑问]":u"❓",u"[馋嘴]":u"?",u"[拜拜]":u"?",u"[思考]":u"?",u"[汗]":u"?",u"[困]":u"?",u"[睡]":u"?",u"[钱]":u"?",u"[失望]":u"?",u"[酷]":u"?",u"[色]":u"?",u"[哼]":u"?",u"[鼓掌]":u"?",u"[晕]":u"?",u"[悲伤]":u"?",u"[黑线]":u"?",u"[怒骂]":u"╰(‵□′)╯",u"[心]":u"❤️",u"[伤心]":u"?",u"[猪头]":u"?",u"[熊猫]":u"?",u"[兔子]":u"?",u"[ok]":u"?",u"[耶]":u"✌️",u"[good]":u"?",u"[NO]":u"?",u"[赞]":u"?",u"[来]":u"(;´▽`)y-~~",u"[弱]":u"?",u"[囧]":u"?",u"[浮云]":u"☁️",u"[话筒]":u"?",u"[蜡烛]":u"?",u"[蛋糕]":u"?",u"[并不简单]":u"?",u"[吃瓜]":u"?",u"[笑而不语]":u"?",u"[允悲]":u"?",u"[憧憬]":u"?",u"[费解]":u"?",u"[抓狂]":u"?",u"[偷笑]":u"?",u"[男孩儿]":u"?",u"[阴险]":u"?",u"[嘘]":u"?",u"[挖鼻]":u"?",u"[偷乐]":u"?",u"[震惊]":u"?",u"[给力]":u"?",u"[可怜]":u"?",u"[乖巧]":u"?",u"[笑]":u"?",u"[调皮]":u"?",u"[眼镜]":u"?",u"[大笑]":u"?",u"[乐观]":u"?",u"[馋]":u"?",u"[飞吻]":u"?",u"[天使]":u"?",u"[黑镜]":u"?",u"[咧嘴]":u"?",u"[开心]":u"?",u"[棒]":u"?",u"[微笑]":u"?",u"[凋谢]":u"?",u"[cp]":u"?",u"[/cp]":u"?",u"[猪]":u"?",u"[流泪]":u"?",u"[爱心]":u"❤️",u"[倒立点赞]":u"???",u"[呲牙]":u"?",u"[皱眉]":u"?",u"[嘿哈]":u"?",u"[感谢感谢]":u"?",u"[举手]":u"?",u"[嘿嘿]":u"?",u"[奸笑]":u"?",u"[机智]":u"?",u"[握手]":u"?",u"[尴了个尬]":u"?",u"[微笑脸]":u"?",u"[冷漠脸]":u"?",u"[鞠躬]":u"?",u"[泪奔]":u"?",u"[发怒]":u"?",u"[大哭]":u"?",u"[ 摊手 ]":u"?‍♀️",u"[摊手]":u"?‍♀️",u"[叹气]":u"?",u"[赞啊]":u"?",u"[拳头]":u"?",u"[玫瑰]":u"?",u"[哈哈哈]":u"?",u"[气哭]":u"?",u"[沉思]":u"?",u"[尬脸]":u"?",u"[尴尬]":u"?",u"[无语]":u"?",u"[哭]":u"?",u"[托腮]":u"?",u"[翻白眼]":u"?",u"[笑到抽搐]":u"?",u"[心碎]":u"?",u"[再见]":u"?",u"[么么哒]":u"?",u"[击掌]":u"?",u"[火火火火火]":u"?",u"[/手动微笑]":u"手动微笑",u"[哭泣]":u"?",u"[撇嘴]":u"?",u"[哆啦A梦吃惊]":u"?",u"[相机]":u"?",u"[挥手]":u"?",u"[火]":u"?",u"[狗]":u"?",u"[Smile]":u"?",u"[愉快]":u"?",u"[泪。。]":u"?",u"[拜]":u"?",u"[笑脸]":u"?",u"[/捂脸]":u"?‍♀️",u"[跳舞]":u"?",u"[听]":u"?",u"[看]":u"?",u"[照片]":u"?",u"[哭哭]":u"?",u"[手动围笑]":u"手动微笑",u"[羞嗒嗒]":u"☺️",u"[祈祷]":u"?",u"[口红]":u"?",u"[攤手]":u"?‍♀️",u"[眼泪]":u"?",u"[小黄人剪刀手]":u"✌️",u"[小黄人高兴]":u"?",u"[脸红]":u"?",u"[哆啦A梦美味]":u"?",u"[笑哈哈]":u"?",u"[火焰]":u"?",u"[噢耶]":u"✌️",u"[鮮花]":u"?",u"[闪电]":u"⚡️",u"[郁金香]":u"?",u"[风景]":u"?",u"[睡觉]":u"?",u"[小黄人得意]":u"?",u"[小黄人坏笑]":u"?",u"[紫心]":u"?",u"[手掌]":u"✋",u"[傻眼]":u"?",u"[好]":u"?",u"[哆啦A梦微笑]":u"?",u"[哆啦A梦开心]":u"?",u"[男孩]":u"?",u"[叉]":u"✕",u"[强壮]":u"?",u"[吐]":u"?",u"[难受]":u"?",u"[外星人]":u"?",u"[小黄人无奈]":u"?",u"[小黄人白眼]":u"?",u"[魔鬼笑]":u"?",u"[惊叫]":u"?",u"[沮丧]":u"?",u"[口罩]":u"?",u"[生气]":u"?",u"[小黄人不屑]":u"?",u"[鄙視]":u"?",u"[感冒]":u"?",u"[鲜花]":u"?",u"[飞机]":u"✈️",u"[礼物]":u"?",u"[爆炸]":u"?",u"[OK]":u"?",u"[示爱]":u"?",u"[屎]":u"?",u"[上面]":u"?",u"[太阳]":u"?",u"[困了]":u"?",u"[黑月]":u"?",u"[蠟燭]":u"?️",u"[贊]":u"?",u"[骷髅]":u"?",u"[月亮]":u"?",u"[鬼]":u"?",u"[下雨]":u"?️",u"[哆啦A梦汗]":u"?",u"[下面]":u"?",u"[哆啦A梦花心]":u"?",u"[小黄人惊讶]":u"?",u"[小黄人白眼]":u"?",u"[哆啦A梦无奈]":u"?",u"[ppb鼓掌]":u"?",u"[干杯]":u"?",u"[惊!]":u"?",u"[小黄人嘲笑]":u"?",u"[微笑狗]":u"?",u"[咖啡]":u"☕️",u"[呆]":u"?",u"[饭]":u"?",u"[dog脸]":u"?",u"[小电视_笑]":u"?",u"[蛆音娘_滑稽]":u"?",u"[2233娘_汗]":u"?",u"[小电视_赞]":u"?",u"[冷兔_无语]":u"?",u"[小电视_害羞]":u"?",u"[狐妖_震惊]":u"?",u"[小电视_哭泣]":u"?",u"[2233娘_困惑]":u"?",u"[蛆音娘_机智]":u"?",u"[小电视_无语]":u"?",u"[小电视_发愁]":u"?",u"[洛天依_滑稽]":u"?",u"[2233娘_大哭]":u"?",u"[小A和小B_喝茶]":u"?",u"[正经人_火]":u"?",u"[小电视_嘟嘴]":u"?",u"[小电视_差评]":u"?",u"[2233娘_无言]":u"?",u"[2233娘_喝茶]":u"?",u"[小电视_我好兴奋]":u"?",u"[2233娘_卖萌]":u"?",u"[2233娘_吃惊]":u"?",u"[小电视_好怒啊]":u"?",u"[星梦手记_尴尬]":u"?",u"[小电视_思索]":u"?",u"[小A和小B_大哭]":u"?",u"[2233娘_耶]":u"✌️",u"[2233娘_大笑]":u"?",u"[芮小凸小凹_震惊]":u"?",u"[小电视_汗]":u"?",u"[洛天依_无言以对]":u"?",u"[洛天依_爱你哦]":u"?",u"[2233娘_喝水]":u"?",u"[doge脸]":u"?",u"[2233娘_疑问]":u"?",u"[小电视_困惑]":u"?",u"[芮小凸小凹_超棒]":u"?",u"[小电视_吃惊]":u"?",u"[小A和小B_摊手]":u"?‍♀️",u"[芮小凸小凹_666]":u"?",u"[冷兔_赞]":u"?",u"[暴走漫画_暗爽]":u"?",u"[狐妖_脸红]":u"?",u"[暴走漫画_赞]":u"?",u"[蛆音娘_无语]":u"?",u"[蛆音娘_哭泣]":u"?",u"[洛天依_冷漠]":u"?",u"[蛆音娘_害怕]":u"?",u"[小A和小B_无语]":u"?",u"[狐妖_哭]":u"?",u"[芮小凸小凹_嘻嘻]":u"?",u"[蛆音娘_吃惊]":u"?",u"[2233娘_怒]":u"?",u"[正经人_赞]":u"?",u"[芮小凸小凹_哎]":u"?",u"[2233娘_郁闷]":u"?",u"[芮小凸小凹_失落]":u"?",u"[冷兔_哭]":u"?",u"[蛆音娘_大笑]":u"?",u"[小A和小B_哈哈哈哈]":u"?",u"[正经人_ok]":u"?",u"[蛆音娘_OK]":u"?",u"[蛆音娘_生气]":u"?",u"[芮小凸小凹_哭]":u"?",u"[正经人_惊]":u"?",u"[洛天依_傲娇]":u"?",u"[那兔_囧]":u"?",u"[蛆音娘_哼]":u"?",u"[狐妖_大笑]":u"?",u"[冷兔_耶]":u"✌️",u"[芮小凸小凹_绝望]":u"?",u"[芮小凸小凹_哼]":u"?",u"[那兔_深思]":u"?",u"[暴走漫画_囧]":u"?",u"[DOGE]":u"?",u"[小A和小B_OK]":u"?",u"[芮小凸小凹_警告]":u"⚠️",u"[芮小凸小凹_心痛]":u"?",u"[狐妖_吃药]":u"?",u"[狐妖_心]":u"❤️",u"[洛天依_哈哈哈]":u"?",u"[国旗]":u"??",u"[花心]":u"?",u"[好激动]":u"?",u"[女孩儿]":u"?",u"[[泪]":u"?",u"[洛天依_吃药]":u"?",u"[窃笑]":u"?",u"[小花花]":u"?",u"[星星]":u"⭐️",u"[狗头]":u"?",u"[嘴角上扬]":u"?",u"[大红灯笼]":u"?"}
emoji_list = [u"[doge]",u"[喵喵]",u"[二哈]",u"[笑哭]",u"[跪了]",u"[打脸]",u"[笑cry]",u"[摊手]",u"[污]",u"[抱抱]",u"[坏笑]",u"[舔屏]",u"[嘻嘻]",u"[哈哈]",u"[可爱]",u"[微笑]",u"[吃惊]",u"[害羞]",u"[挤眼]",u"[闭嘴]",u"[鄙视]",u"[爱你]",u"[鲜花]",u"[草泥马]",u"[小黄人高兴]",u"[泪]",u"[亲亲]",u"[生病]",u"[太开心]",u"[白眼]",u"[右哼哼]",u"[左哼哼]",u"[衰]",u"[委屈]",u"[哈欠]",u"[抱抱_旧]",u"[怒]",u"[疑问]",u"[馋嘴]",u"[拜拜]",u"[思考]",u"[汗]",u"[困]",u"[睡]",u"[钱]",u"[失望]",u"[酷]",u"[色]",u"[哼]",u"[鼓掌]",u"[晕]",u"[悲伤]",u"[黑线]",u"[怒骂]",u"[心]",u"[伤心]",u"[猪头]",u"[熊猫]",u"[兔子]",u"[ok]",u"[耶]",u"[good]",u"[NO]",u"[赞]",u"[来]",u"[弱]",u"[囧]",u"[浮云]",u"[话筒]",u"[蜡烛]",u"[蛋糕]",u"[并不简单]",u"[吃瓜]",u"[笑而不语]",u"[允悲]",u"[憧憬]",u"[费解]",u"[抓狂]",u"[偷笑]",u"[男孩儿]",u"[阴险]",u"[嘘]",u"[挖鼻]",u"[偷乐]",u"[震惊]",u"[给力]",u"[可怜]",u"[乖巧]",u"[笑]",u"[调皮]",u"[眼镜]",u"[大笑]",u"[乐观]",u"[馋]",u"[飞吻]",u"[天使]",u"[黑镜]",u"[咧嘴]",u"[开心]",u"[棒]",u"[微笑]",u"[凋谢]",u"[cp]",u"[/cp]",u"[猪]",u"[流泪]",u"[爱心]",u"[倒立点赞]",u"[呲牙]",u"[皱眉]",u"[嘿哈]",u"[感谢感谢]",u"[举手]",u"[嘿嘿]",u"[奸笑]",u"[机智]",u"[握手]",u"[尴了个尬]",u"[微笑脸]",u"[冷漠脸]",u"[鞠躬]",u"[泪奔]",u"[发怒]",u"[大哭]",u"[ 摊手 ]",u"[摊手]",u"[叹气]",u"[赞啊]",u"[拳头]",u"[玫瑰]",u"[哈哈哈]",u"[气哭]",u"[沉思]",u"[尬脸]",u"[尴尬]",u"[无语]",u"[哭]",u"[托腮]",u"[翻白眼]",u"[笑到抽搐]",u"[心碎]",u"[再见]",u"[么么哒]",u"[击掌]",u"[火火火火火]",u"[/手动微笑]",u"[哭泣]",u"[撇嘴]",u"[哆啦A梦吃惊]",u"[相机]",u"[挥手]",u"[火]",u"[狗]",u"[Smile]",u"[愉快]",u"[泪。。]",u"[拜]",u"[笑脸]",u"[/捂脸]",u"[跳舞]",u"[听]",u"[看]",u"[照片]",u"[哭哭]",u"[手动围笑]",u"[羞嗒嗒]",u"[祈祷]",u"[口红]",u"[攤手]",u"[眼泪]",u"[小黄人剪刀手]",u"[小黄人高兴]",u"[脸红]",u"[哆啦A梦美味]",u"[笑哈哈]",u"[火焰]",u"[噢耶]",u"[鮮花]",u"[闪电]",u"[郁金香]",u"[风景]",u"[睡觉]",u"[小黄人得意]",u"[小黄人坏笑]",u"[紫心]",u"[手掌]",u"[傻眼]",u"[好]",u"[哆啦A梦微笑]",u"[哆啦A梦开心]",u"[男孩]",u"[叉]",u"[强壮]",u"[吐]",u"[难受]",u"[外星人]",u"[小黄人无奈]",u"[小黄人白眼]",u"[魔鬼笑]",u"[惊叫]",u"[沮丧]",u"[口罩]",u"[生气]",u"[小黄人不屑]",u"[鄙視]",u"[感冒]",u"[鲜花]",u"[飞机]",u"[礼物]",u"[爆炸]",u"[OK]",u"[示爱]",u"[屎]",u"[上面]",u"[太阳]",u"[困了]",u"[黑月]",u"[蠟燭]",u"[贊]",u"[骷髅]",u"[月亮]",u"[鬼]",u"[下雨]",u"[哆啦A梦汗]",u"[下面]",u"[哆啦A梦花心]",u"[小黄人惊讶]",u"[小黄人白眼]",u"[哆啦A梦无奈]",u"[ppb鼓掌]",u"[干杯]",u"[惊!]",u"[小黄人嘲笑]",u"[微笑狗]",u"[咖啡]",u"[呆]",u"[饭]",u"[dog脸]",u"[小电视_笑]",u"[蛆音娘_滑稽]",u"[2233娘_汗]",u"[小电视_赞]",u"[冷兔_无语]",u"[小电视_害羞]",u"[狐妖_震惊]",u"[小电视_哭泣]",u"[2233娘_困惑]",u"[蛆音娘_机智]",u"[小电视_无语]",u"[小电视_发愁]",u"[洛天依_滑稽]",u"[2233娘_大哭]",u"[小A和小B_喝茶]",u"[正经人_火]",u"[小电视_嘟嘴]",u"[小电视_差评]",u"[2233娘_无言]",u"[2233娘_喝茶]",u"[小电视_我好兴奋]",u"[2233娘_卖萌]",u"[2233娘_吃惊]",u"[小电视_好怒啊]",u"[星梦手记_尴尬]",u"[小电视_思索]",u"[小A和小B_大哭]",u"[2233娘_耶]",u"[2233娘_大笑]",u"[芮小凸小凹_震惊]",u"[小电视_汗]",u"[洛天依_无言以对]",u"[洛天依_爱你哦]",u"[2233娘_喝水]",u"[doge脸]",u"[2233娘_疑问]",u"[小电视_困惑]",u"[芮小凸小凹_超棒]",u"[小电视_吃惊]",u"[小A和小B_摊手]",u"[芮小凸小凹_666]",u"[冷兔_赞]",u"[暴走漫画_暗爽]",u"[狐妖_脸红]",u"[暴走漫画_赞]",u"[蛆音娘_无语]",u"[蛆音娘_哭泣]",u"[洛天依_冷漠]",u"[蛆音娘_害怕]",u"[小A和小B_无语]",u"[狐妖_哭]",u"[芮小凸小凹_嘻嘻]",u"[蛆音娘_吃惊]",u"[2233娘_怒]",u"[正经人_赞]",u"[芮小凸小凹_哎]",u"[2233娘_郁闷]",u"[芮小凸小凹_失落]",u"[冷兔_哭]",u"[蛆音娘_大笑]",u"[小A和小B_哈哈哈哈]",u"[正经人_ok]",u"[蛆音娘_OK]",u"[蛆音娘_生气]",u"[芮小凸小凹_哭]",u"[正经人_惊]",u"[洛天依_傲娇]",u"[那兔_囧]",u"[蛆音娘_哼]",u"[狐妖_大笑]",u"[冷兔_耶]",u"[芮小凸小凹_绝望]",u"[芮小凸小凹_哼]",u"[那兔_深思]",u"[暴走漫画_囧]",u"[DOGE]",u"[小A和小B_OK]",u"[芮小凸小凹_警告]",u"[芮小凸小凹_心痛]",u"[狐妖_吃药]",u"[狐妖_心]",u"[洛天依_哈哈哈]",u"[国旗]",u"[花心]",u"[好激动]",u"[女孩儿]",u"[[泪]",u"[洛天依_吃药]",u"[窃笑]",u"[小花花]",u"[星星]",u"[狗头]",u"[嘴角上扬]",u"[大红灯笼]"]
# 所有中文(去除【哈】)
simpleCharacters = u'啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座锕嗳嫒瑷暧霭谙铵鹌媪骜鳌钯呗钣鸨龅鹎贲锛荜哔滗铋筚跸苄缏笾骠飑飙镖镳鳔傧缤槟殡膑镔髌鬓禀饽钹鹁钸骖黪恻锸侪钗冁谄谶蒇忏婵骣觇禅镡伥苌怅阊鲳砗伧谌榇碜龀枨柽铖铛饬鸱铳俦帱雠刍绌蹰钏怆缍鹑辍龊鹚苁骢枞辏撺锉鹾哒鞑骀绐殚赕瘅箪谠砀裆焘镫籴诋谛绨觌镝巅钿癫铫鲷鲽铤铥岽鸫窦渎椟牍笃黩簖怼镦炖趸铎谔垩阏轭锇锷鹗颚颛鳄诶迩铒鸸鲕钫鲂绯镄鲱偾沣凫驸绂绋赙麸鲋鳆钆赅尴擀绀戆睾诰缟锆纥镉颍亘赓绠鲠诟缑觏诂毂钴锢鸪鹄鹘鸹掴诖掼鹳鳏犷匦刿妫桧鲑鳜衮绲鲧埚呙帼椁蝈铪阚绗颉灏颢诃阖蛎黉讧荭闳鲎浒鹕骅桦铧奂缳锾鲩鳇诙荟哕浍缋珲晖诨馄阍钬镬讦诘荠叽哜骥玑觊齑矶羁虿跻霁鲚鲫郏浃铗镓蛲谏缣戋戬睑鹣笕鲣鞯绛缰挢峤鹪鲛疖颌鲒卺荩馑缙赆觐刭泾迳弪胫靓阄鸠鹫讵屦榉飓钜锔窭龃锩镌隽谲珏皲剀垲忾恺铠锴龛闶钪铐骒缂轲钶锞颔龈铿喾郐哙脍狯髋诓诳邝圹纩贶匮蒉愦聩篑阃锟鲲蛴崃徕涞濑赉睐铼癞籁岚榄斓镧褴阆锒唠崂铑铹痨鳓诔缧俪郦坜苈莅蓠呖逦骊缡枥栎轹砺锂鹂疠粝跞雳鲡鳢蔹奁潋琏殓裢裣鲢魉缭钌鹩蔺廪檩辚躏绫棂蛏鲮浏骝绺镏鹨茏泷珑栊胧砻偻蒌喽嵝镂瘘耧蝼髅垆撸噜闾泸渌栌橹轳辂辘氇胪鸬鹭舻鲈脔娈栾鸾銮囵荦猡泺椤脶镙榈褛锊呒唛嬷杩劢缦镘颡鳗麽扪焖懑钔芈谧猕祢渑腼黾缈缪闵缗谟蓦馍殁镆钼铙讷铌鲵辇鲶茑袅陧蘖嗫颟蹑苎咛聍侬哝驽钕傩讴怄瓯蹒疱辔纰罴铍谝骈缥嫔钋镤镨蕲骐绮桤碛颀颃鳍佥荨悭骞缱椠钤嫱樯戗炝锖锵镪羟跄诮谯荞缲硗跷惬锲箧锓揿鲭茕蛱巯赇虮鳅诎岖阒觑鸲诠绻辁铨阕阙悫荛娆桡饪轫嵘蝾缛铷颦蚬飒毵糁缫啬铯穑铩鲨酾讪姗骟钐鳝垧殇觞厍滠畲诜谂渖谥埘莳弑轼贳铈鲥绶摅纾闩铄厮驷缌锶鸶薮馊飕锼谡稣谇荪狲唢睃闼铊鳎钛鲐昙钽锬顸傥饧铴镗韬铽缇鹈阗粜龆鲦恸钭钍抟饨箨鼍娲腽纨绾辋诿帏闱沩涠玮韪炜鲔阌莴龌邬庑怃妩骛鹉鹜饩阋玺觋硖苋莶藓岘猃娴鹇痫蚝籼跹芗饷骧缃飨哓潇骁绡枭箫亵撷绁缬陉荥馐鸺诩顼谖铉镟谑泶鳕埙浔鲟垭娅桠氩厣赝俨兖谳恹闫酽魇餍鼹炀轺鹞鳐靥谒邺晔烨诒呓峄饴怿驿缢轶贻钇镒镱瘗舣铟瘾茔莺萦蓥撄嘤滢潆璎鹦瘿颏罂镛莸铕鱿伛俣谀谕蓣嵛饫阈妪纡觎欤钰鹆鹬龉橼鸢鼋钺郓芸恽愠纭韫殒氲瓒趱錾驵赜啧帻箦谮缯谵诏钊谪辄鹧浈缜桢轸赈祯鸩诤峥钲铮筝骘栉栀轵轾贽鸷蛳絷踬踯觯锺纣绉伫槠铢啭馔颞骓缒诼镯谘缁辎赀眦锱龇鲻偬诹驺鲰镞缵躜鳟讠谫郄勐凼坂垅垴埯埝苘荬荮莜莼菰藁揸吒吣咔咝咴噘噼嚯幞岙嵴彷徼犸狍馀馇馓馕愣憷懔丬溆滟溷漤潴澹甯纟绔绱珉枧桊桉槔橥轱轷赍肷胨飚煳煅熘愍淼砜磙眍钚钷铘铞锃锍锎锏锘锝锪锫锿镅镎镢镥镩镲稆鹋鹛鹱疬疴痖癯裥襁耢颥螨麴鲅鲆鲇鲞鲴鲺鲼鳊鳋鳘鳙鞒鞴齄'

# 城市词语
city_words = [u"北京",u"北京",u"上海",u"上海",u"天津",u"天津",u"重庆",u"重庆",u"广东",u"广州",u"深圳",u"佛山",u"惠州",u"汕头",u"东莞",u"茂名",u"江门",u"珠海",u"湛江",u"肇庆",u"揭阳",u"中山",u"韶关",u"阳江",u"云浮",u"梅州",u"清远",u"潮州",u"汕尾",u"河源",u"河南",u"郑州",u"洛阳",u"南阳",u"新乡",u"信阳",u"安阳",u"平顶山",u"驻马店",u"焦作",u"三门峡",u"周口",u"许昌",u"开封",u"商丘",u"濮阳",u"漯河",u"鹤壁",u"四川",u"成都",u"绵阳",u"乐山",u"德阳",u"泸州",u"达州",u"眉山",u"自贡",u"南充",u"内江",u"宜宾",u"广安",u"雅安",u"资阳",u"广元",u"遂宁",u"攀枝花",u"巴中",u"甘孜",u"凉山",u"阿坝",u"江苏",u"苏州",u"南京",u"无锡",u"徐州",u"镇江",u"盐城",u"南通",u"常州",u"扬州",u"泰州",u"连云港",u"宿迁",u"淮安",u"湖北",u"武汉",u"宜昌",u"荆州",u"襄樊",u"十堰",u"荆门",u"黄冈",u"孝感",u"黄石",u"咸宁",u"恩施",u"随州",u"鄂州",u"仙桃",u"潜江",u"天门",u"浙江",u"杭州",u"温州",u"宁波",u"金华",u"台州",u"嘉兴",u"绍兴",u"湖州",u"丽水",u"衢州",u"舟山",u"福建",u"福州",u"泉州",u"厦门",u"漳州",u"宁德",u"三明",u"莆田",u"南平",u"龙岩",u"黑龙江",u"哈尔滨",u"大庆",u"绥化",u"齐齐哈尔",u"佳木斯",u"牡丹江",u"黑河",u"鸡西",u"伊春",u"鹤岗",u"双鸭山",u"七台河",u"大兴安岭",u"山东",u"济南",u"青岛",u"潍坊",u"烟台",u"临沂",u"淄博",u"泰安",u"济宁",u"聊城",u"东营",u"威海",u"德州",u"滨州",u"莱芜",u"枣庄",u"菏泽",u"日照",u"陕西",u"西安",u"渭南",u"咸阳",u"宝鸡",u"汉中",u"榆林",u"安康",u"延安",u"商洛",u"铜川",u"河北",u"石家庄",u"唐山",u"保定",u"沧州",u"邯郸",u"衡水",u"秦皇岛",u"廊坊",u"邢台",u"承德",u"张家口",u"辽宁",u"沈阳",u"大连",u"锦州",u"鞍山",u"辽阳",u"丹东",u"营口",u"本溪",u"铁岭",u"抚顺",u"朝阳",u"宿迁",u"阜新",u"葫芦岛",u"盘锦",u"吉林",u"长春",u"吉林",u"延边",u"四平",u"白城",u"通化",u"松原",u"白山",u"辽源",u"云南",u"昆明",u"红河",u"玉溪",u"曲靖",u"大理",u"文山",u"保山",u"丽江",u"昭通",u"思茅",u"临沧",u"楚雄",u"新疆",u"乌鲁木齐",u"石河子",u"塔城",u"克拉玛依",u"阿克苏",u"哈密",u"巴音郭楞",u"阿勒泰",u"昌吉",u"伊犁哈萨克",u"吐鲁番",u"喀什",u"博尔塔拉",u"克孜勒苏柯尔克孜",u"和田",u"五家渠",u"广西",u"南宁",u"柳州",u"桂林",u"百色",u"河池",u"梧州",u"贵港",u"玉林",u"北海",u"钦州",u"来宾",u"贺州",u"防城港",u"山西",u"太原",u"运城",u"吕梁",u"晋中",u"临汾",u"大同",u"晋城",u"长治",u"忻州",u"阳泉",u"朔州",u"湖南",u"长沙",u"株洲",u"衡阳",u"郴州",u"常德",u"岳阳",u"永州",u"邵阳",u"怀化",u"益阳",u"湘潭",u"娄底",u"张家界",u"湘西",u"江西",u"南昌",u"赣州",u"九江",u"上饶",u"景德镇",u"吉安",u"鹰潭",u"宜春",u"抚州",u"萍乡",u"新余",u"安徽",u"合肥",u"滁州",u"宿州",u"安庆",u"六安",u"蚌埠",u"亳州",u"阜阳",u"芜湖",u"宣城",u"巢湖",u"铜陵",u"淮南",u"马鞍山",u"内蒙古",u"呼和浩特",u"呼伦贝尔",u"赤峰",u"包头",u"巴彦淖尔",u"鄂尔多斯",u"乌海",u"乌兰察布",u"兴安盟",u"锡林郭勒盟",u"阿拉善盟",u"甘肃",u"兰州",u"武威",u"张掖",u"嘉峪关",u"天水",u"平凉",u"陇南",u"庆阳",u"定西",u"酒泉",u"白银",u"金昌",u"临夏",u"海南",u"海口",u"三亚",u"儋州",u"万宁",u"五指山",u"琼海",u"贵州",u"贵阳",u"遵义",u"六盘水",u"黔南",u"毕节",u"安顺",u"铜仁",u"黔东南",u"黔西南",u"宁夏",u"银川",u"吴忠",u"石嘴山",u"固原",u"中卫",u"青海",u"西宁",u"海西",u"玉树",u"海东",u"西藏",u"拉萨",u"那曲",u"林芝",u"日喀则",u"台湾",u"香港",u"香港",u"澳门",u"澳门",u"东北",u"台中"]

# title过滤词
title_words = [u"@",u'@', u"http", u"qq", u"我是",u"本人",u"作为",u"最右",u"谁",u"右友",u"右右",u"小右",u"友右",u"魏豪杰",u"知乎",u"纹身",u"文身",u"军队",u"星座",u"发帖",u"我上去",u"想上去",u"能上去",u"楼主",u"神评",u"楼下",u"要上去",u"顶上去",u"生日",u"评论",u"举爪",u"举个爪",u"举手",u"举个手",u"发言",u"集合",u"战队",u"请进",u"点赞",u"转转",u"标题",u"坐标",u"来自",u"骗赞",u"热评",u"右上角",u"骗进来",u"老规矩",u"报道",u"送上去",u"来晚",u"顶我",u"上的去",u"上得去",u"帖子",u"来迟",u"今天",u"赞我",u"即刻",u"即友",u"长按",u"http",u"路过",u"主题",u"品玩",u"头像",u"网易",u"橘君",u"我姓",u"骗我",u"我都已经",u"橘子",u"桔子",u"小编",u"app",u"直播",u"猜 |",u"新浪",u"mono",u"猫弄",u"桔子君",u"橘子君",u"桔君",u"qq",u"留名",u"你好",u"早上好", u"广告", u"垃圾帖", u"特别鸣谢", u"表情包原图哥",u"小评", u"楼主", u"多玩", u"s娘", u"绿肥", u"网友",u"今日", u'转载', u'贴吧', u'微信公众号', u'收藏',u'好奇心',u'客服', u'公众号',u'链接', u'b站', u'b 站', u'贩卖人口', u'下载', u'bilibili',u'哔哩哔哩',u'助攻',u'吸猫',u'打卡',u'求赞',u'com', u'33娘',u'段子',u'段友',u'点评',u'微商',u'早啊', u'早上好', u'晚上好', u'中午好', u'下午', u'凌晨', u'周末', u'今天', u'明天', u'上午', u'下午', u'后天', u'昨天',u'前天',u'233',u'求车',u'强行上头条',u'感谢分享',u'保存动图',u'什么时候上映',u'城会玩',u'求片面',u'求种子',u'找到资源',u'哪里能看',u'为什么看不了了',u'保存图片',u'求资源',u'标题党',u'原文地址',u'标题都不换',u'求种',u'沙发',u'小编',u'怎么没人评论',u'查看原图',u'外链',u'日报道',u'左上',u'左下',u'右上',u'右下', u'订阅',u'微信id',u'微信公众号地球知识局',u'加微信',u'留下微信',u'抵制',u'原图',u'爬梯',u'个人观点',u'勿撕',u'*', u'.cn', u'.com', u'www',u'进群', u'录制', u'加群', u'更新',u'up',u'搬运',u'激活码',u'断更',u'字幕',u'制作',u'新人',u'免费送',u'招网兼',u'招兼职',u'微商代理',u'招代理',u'楼上',u'周一',u'周二',u'周三',u'周四',u'周五',u'周六',u'周日',u'周末',u'周更',u'不更',u'快更',u'拖更',u'断更',u'日更',u'月更',u'年更',u'上车',u'号码',u'加id',u'投不了币',u'点个赞',u'硬币',u'抽奖',u'盗视频',u'你们放弃',u'催更',u'传上',u'过审',u'审核',u'投个币',u'交封',u'第三第三',u'顶点赛高',u'前排',u'抢个',u'第一第一',u'第二第二',u'首页',u'刷到',u'取关',u'关注',u'破译',u'斗鱼',u'后援',u'资源',u'少班主',u'百级',u'举报',u'粉丝',u'阿婆主',u'马甲',u'观看',u'芦萎',u'微信',u'想代',u'小伙伴可以',u'水友',u'分享',u'yy',u'打钱',u'空降',u'中奖',u'密码',u'电话',u'扣扣',u'包邮',u'我这里',u'加个好友',u'加好友',u'某宝',u'代购',u'房间',u'骗了我',u'留下',u'领钱',u'群里',u'店铺',u'私信',u'ios码',u'安卓码',u'留个言',u'激活码',u'留言',u'内测',u'加我',u'种子',u'已投',u'贴膜',u'团购群',u'求加',u'百度云',u'帐号',u'水友群',u'好友',u'加一下',u'办卡',u'欢迎',u'Q群',u'欢迎各位',u'伙伴群',u'群号',u'q群',u'屠龙宝刀',u'企鹅',u'群:',u'邀请码',u'抓娃娃',u'小号',u'大号',u'录播',u'投币',u'字幕',u'考古',u'up',u'av',u'弹幕',u'播放',u'助攻',u'这期',u'一期',u'系列',u'哔哩哔哩',u'ht★tp',u'pan',u'网盘',u'正片',u'打卡',u'com',u'#',u'喜欢学姐',u'封面', u'咨询',u'水印',u'月份',u'刚毕业',u'日期',u'以下是',u'舍友',u'室友',u'点我',u'我爸',u'我妈',u'老图',u'水印',u'给我点赞',u'据报道',u'初中',u'高中',u'收藏',u'提点建议',u'快来发表你的观点吧',u'小时候',u'今年',u'明年',u'去年',u'过年',u'微博',u'吱口令',u'主题',u'谁',u'上传',u'早上',u'中午',u'晚上',u'题主',u'答主',u'赞个',u'赞一个',u'舍友',u'室友',u'点我',u'我爸',u'我妈',u'老图',u'水印',u'给我点赞',u'据报道',u'初中',u'高中',u'收藏',u'提点建议',u'快来发表你的观点吧',u'小时候',u'卤煮',u'大家是否',u'家里',u'老娘',u'一年级',u'二年级',u'三年级',u'四年级',u'五年级',u'六年级',u'我第一次',u'个吊',u'要我的话',u'微信',u'微商',u'我当年',u'转发',u'自动回复',u'微po',u'错别字',u'原来你',u'硬了一下',u'我一个男的',u'我一个女的',u'三年血赚', u'死刑不亏',u'楼主',u'软广',u'我这里',u'我何时',u'我什么时候',u'魅族',u'魅蓝',u'就我一个人',u'我的妹妹',u'我的姐姐',u'我的妈妈',u'我的爸爸',u'我的弟弟',u'我的哥哥',u'我的叔叔',u'我的阿姨',u'我的爷爷',u'我的奶奶',u'我的外婆',u'我的外公',u'我的舅舅',u'我的舅妈',u'我的儿子',u'我的女儿',u'我的老爸',u'我的老妈',u'我的姥姥',u'我的姥爷',u'我的同学',u'我的同桌',u'█',u'&gt',u'催稿',u'答案',u'回复',u'层主',u'谢谢',u'新年快乐',u'回答',u'感谢',u'来早了',u'来晚了',u'占位',u'占个位置',u'侵删',u"宿舍",u"室友",u"寝室",u"输入法",u"帮忙",u"初中",u"高中",u"初一",u"初二",u"初三",u"高一",u"高二",u"高三",u"大一",u"大二",u"大三",u"大四",u"OPPO",u"VIVO",u"华为",u"小米",u"班级",u"这张图",u"___",u"一句话",u"说句话",u"军训",u"教官",u"发一张",u"处朋友",u"家人们",u"放假",u"说什么",u"上推荐",u"你会说",u"猜",u"教室",u"小冰",u"你怎么",u"在线等",u"上课",u"学校里",u"话题",u"看过来",u"哪个",u"觉得自己",u"哪位",u"顶一下",u"选一个",u"轻喷",u"福利",u"自家",u"大家",u"最右",u"友友",u"右友",u"指教",u"求大神",u"我家",u"有没有",u"学校",u"校运会",u"求大佬",u"求助",u"中秋",u"国庆",u"端午",u"清明",u"q友",u"祝福",u"暑假",u"哪些",u"哪种",u"哪一种",u'专栏行为准则',u'公告',u'周报',u'刚过', u'专栏',u'//',u'投稿',u'招聘',u'快报',u'更新', u'停更', u'通知',u'招募',u'acfun',u'账号',u'盗我',u'每周',u'明晚',u'上半部分',u'下半部分',u'上部分',u'下部分',u'早安',u'午安',u'晚安',u'主页君',u'今晚',u'昨晚',u'新年',u'倒计时',u'白羊座',u'金牛座',u'双子座',u'巨蟹座',u'狮子座',u'处女座',u'天秤座',u'天蝎座',u'天平座',u'摩羯座',u'射手座',u'水瓶座',u'双鱼座',u'今夜话题',u'聊天室',u'品姐']

# comment过滤词
comment_words =  [u"@", u'@', u"http", u"qq", u"我是",u"本人",u"作为",u"最右",u"右友",u"右右",u"小右",u"友右",u"魏豪杰",u"知乎",u"纹身",u"文身",u"军队",u"星座",u"发帖",u"我上去",u"想上去",u"能上去",u"楼主",u"神评",u"楼下",u"要上去",u"顶上去",u"生日",u"评论",u"举爪",u"举个爪",u"举手",u"举个手",u"发言",u"集合",u"战队",u"请进",u"点赞",u"转转",u"标题",u"坐标",u"来自",u"骗赞",u"热评",u"右上角",u"骗进来",u"老规矩",u"报道",u"送上去",u"来晚",u"顶我",u"上的去",u"上得去",u"帖子",u"来迟",u"今天",u"赞我",u"即刻",u"即友",u"长按",u"http",u"路过",u"品玩",u"头像",u"网易",u"橘君",u"我姓",u"骗我",u"我都已经",u"橘子",u"桔子",u"小编",u"app",u"直播",u"预告",u"猜 |",u"新浪",u"mono",u"猫弄",u"桔子君",u"橘子君",u"桔君",u"qq",u"留名",u"你好",u"早上好", u"广告", u"垃圾帖", u"特别鸣谢", u"表情包原图哥",u"小评", u"多玩",u"s娘", u"绿肥", u"网友", u"今日", u'转载', u'贴吧', u'微信公众号', u'收藏',u'好奇心',u'微博',u'客服',u'公众号',u'链接', u'b站', u'b 站', u'贩卖人口', u'下载', u'楼', u'违反', u'bilibili', u'助攻', u'哔哩哔哩', u'吸猫',u'打卡',u'求赞', u'com',u'33娘',u'段子',u'段友',u'点评',u'微商',u'早啊', u'早上好', u'晚上好', u'中午好', u'下午', u'凌晨', u'周末', u'今天', u'明天', u'上午', u'下午', u'后天', u'昨天',u'前天', u'233',u'求车',u'强行上头条',u'感谢分享',u'保存动图',u'什么时候上映',u'城会玩',u'求片面',u'求种子',u'找到资源',u'哪里能看',u'为什么看不了了',u'保存图片',u'求资源',u'标题党',u'原文地址',u'标题都不换',u'求种',u'沙发',u'小编',u'怎么没人评论',u'查看原图',u'外链',u'日报道',u'左上',u'左下',u'右上',u'右下', u'订阅',u'微信id',u'微信公众号地球知识局',u'加微信',u'留下微信',u'抵制',u'原图',u'爬梯',u'个人观点',u'勿撕',u'*', u'.cn', u'.com',u'www',u'进群', u'录制', u'加群',u'更新',u'�',u'up',u'搬运', u'激活码',u'断更',u'字幕组',u'制作',u'新人',u'免费送',u'招网兼',u'招兼职',u'微商代理',u'招代理',u'楼上',u'周一',u'周二',u'周三',u'周四',u'周五',u'周六',u'周日',u'周末',u'周更',u'不更',u'快更',u'拖更',u'断更',u'日更',u'月更',u'年更', u'上车', u'号码', u'加id',  u'投不了币', u'点个赞', u'硬币', u'抽奖', u'盗视频', u'你们放弃', u'催更', u'传上', u'过审', u'审核', u'投个币', u'交封', u'第三第三', u'顶点赛高', u'前排', u'抢个', u'第一第一', u'第二第二', u'首页', u'刷到', u'取关', u'关注', u'破译', u'斗鱼', u'后援', u'资源', u'少班主', u'百级', u'举报', u'粉丝', u'阿婆主', u'马甲', u'观看', u'芦萎', u'微信', u'想代', u'小伙伴可以', u'水友', u'分享', u'yy', u'打钱', u'空降', u'中奖', u'密码', u'电话', u'扣扣', u'包邮', u'我这里', u'加个好友', u'加好友', u'某宝', u'代购', u'房间',u'骗了我',u'留下', u'领钱',u'群里',u'店铺', u'私信', u'ios码', u'安卓码', u'留个言', u'激活码', u'留言', u'内测', u'加我', u'种子', u'已投', u'贴膜', u'团购群', u'求加', u'百度云', u'帐号',u'水友群', u'好友', u'加一下', u'办卡', u'欢迎', u'Q群',u'欢迎各位', u'伙伴群', u'群号', u'q群', u'屠龙宝刀', u'企鹅', u'群:', u'邀请码', u'抓娃娃', u'小号', u'大号', u'录播', u'投币', u'字幕',u'考古', u'2016', u'2017', u'2018', u'up', u'av',u'弹幕', u'播放', u'助攻', u'这期', u'一期', u'系列', u'哔哩哔哩',u'ht★tp',u'pan',u'网盘', u'正片',u'打卡', u'com', u'#', u'喜欢学姐', u'封面', u'咨询',u'水印',u'月份',u'刚毕业',u'日期',u'以下是',u'舍友',u'室友',u'点我',u'我爸',u'我妈',u'老图',u'水印',u'给我点赞',u'据报道',u'初中',u'高中',u'收藏',u'提点建议',u'快来发表你的观点吧',u'小时候',u'今年', u'明年', u'去年',u'过年',u'微博',u'吱口令',u'主题', u'谁',u'上传',u'早上', u'中午', u'晚上',u'题主',u'答主', u'赞个',u'赞一个',u'舍友',u'室友',u'点我',u'我爸',u'我妈',u'老图',u'水印',u'给我点赞',u'据报道',u'初中',u'高中',u'收藏',u'提点建议',u'快来发表你的观点吧',u'小时候',u'卤煮',u'大家是否',u'家里',u'老娘',u'一年级',u'二年级',u'三年级',u'四年级',u'五年级',u'六年级',u'我第一次',u'个吊',u'要我的话',u'微信',u'微商',u'我当年',u'转发',u'自动回复',u'微po',u'错别字',u'原来你',u'硬了一下',u'我一个男的',u'我一个女的',u'三年血赚', u'死刑不亏',u'楼主',u'软广',u'我这里',u'我何时',u'我什么时候',u'魅族',u'魅蓝',u'就我一个人',u'我的妹妹',u'我的姐姐',u'我的妈妈',u'我的爸爸',u'我的弟弟',u'我的哥哥',u'我的叔叔',u'我的阿姨',u'我的爷爷',u'我的奶奶',u'我的外婆',u'我的外公',u'我的舅舅',u'我的舅妈',u'我的儿子',u'我的女儿',u'我的老爸',u'我的老妈',u'我的姥姥',u'我的姥爷',u'我的同学',u'我的同桌',u'█',u'&gt',u'催稿',u'答案',u'回复',u'层主',u'谢谢',u'新年快乐',u'回答',u'感谢',u'来早了', u'来晚了', u'占位', u'占个位置',u'淘宝',u'侵删',u'id', u'匿名', u'匿了',u"宿舍",u"室友",u"寝室",u"输入法",u"帮忙",u"初中",u"高中",u"初一",u"初二",u"初三",u"高一",u"高二",u"高三",u"大一",u"大二",u"大三",u"大四",u"OPPO",u"VIVO",u"华为",u"小米",u"班级",u"这张图",u"___",u"一句话",u"说句话",u"军训",u"教官",u"发一张",u"处朋友",u"家人们",u"放假",u"说什么",u"上推荐",u"你会说",u"猜",u"教室",u"小冰",u"你怎么",u"在线等",u"上课",u"学校里",u"话题",u"看过来",u"哪个",u"觉得自己",u"哪位",u"顶一下",u"选一个",u"轻喷",u"福利",u"自家",u"大家",u"最右",u"友友",u"右友",u"指教",u"求大神",u"我家",u"有没有",u"学校",u"校运会",u"求大佬",u"求助",u"中秋",u"国庆",u"端午",u"清明",u"q友",u"祝福",u"暑假",u"哪些",u"哪种",u"哪一种",u'番号',u'公告',u'周报',u'刚过', u'专栏',u'投稿',u'招聘',u'刘明',u'火钳',u'屏蔽',u'招募',u'抖音',u'emoji',u'明晚',u'上半部分',u'下半部分',u'上部分',u'下部分',u'早安',u'午安',u'晚安',u'主页君',u'今晚',u'昨晚',u'新年',u'倒计时',u'白羊座',u'金牛座',u'双子座',u'巨蟹座',u'狮子座',u'处女座',u'天秤座',u'天蝎座',u'天平座',u'摩羯座',u'射手座',u'水瓶座',u'双鱼座',u'今夜话题',u'聊天室',u'品姐',u'互粉',u'私',u'主页',u'进来看',u'点进来',u'博主',u'评论配图',u'图片评论',u'转发微博',u'学长',u'师姐',u'b好痒',u'水军',u'找我',u'网页链接',u'生快',u'mark',u'马住',u'马克',u'卖片',u'0回复',u'零回复',u'自动回复',u'营销号',u'红包',u'支付宝',u'观❤️影',u'网拍模特',u'顶我上去',u'取消关注',u'❤️',u'原po️']

# 非法字符
invalid_chars = u'【】##[]@'

def has_human_person(content):
    if u'你' in content and u'我' in content and u'他' in content:
        return True
    return False

def has_city_words(content):
    """
        是否存在城市词
    """
    for item in city_words:
        if item in content:
            logger.war(u'城市过滤词: ' + item + "\t" + content.replace("\n", " "))
            return True
    return False


def ch_num(comment):
    """
        中文字符个数
    """
    count = 0
    for item in comment:
        if item in simpleCharacters:
            count+=1
    return count


def invalid_len_ch(title):
    """
        中文字符个数是否小于6
    """
    if ch_num(title) < 6:
        return True
    return False


def has_invalid_chars(content):
    """
        是否包含非法字符
    """
    for word in invalid_chars:
        if word in content:
            logger.war(u'非法字符: ' + word + '\t' + content.replace("\n", " "))
            return True
    return False


def has_title_words(title):
    """
        是否包含title过滤词
    """
    for item in title_words:
        if item in title.lower():
            logger.war(u'title过滤词: ' + item + "\t" + title.replace("\n", " "))
            return True
    return False


def has_comment_words(comment):
    """
        是否包含comment过滤词
    """
    for item in comment_words:
        if item in comment.lower():
            logger.war(u'comment过滤词: ' + item  + "\t" + comment.replace("\n", " "))
            return True
    return False


def discuss(content):
    """
    根据review中内容进行打分,返回评论分数是否>=1
    :param content:
    :return: True or False
    """
    score = 0
    if content.find(u'楼主') >= 0 : score += 1
    if content.find(u'求过') >= 0 : score += 1
    if content.find(u'求') >= 0 : score += 1
    if content.find(u'每人') >= 0 and content.find(u'一') > 0 and content.find(u'一') > content.find(u'每人'):
        score += 1
    if content.find(u'审帖') >= 0 or content.find(u'审核') >= 0:
        score += 1
    if content.find(u'讲讲') >= 0 : score += 1
    if content.find(u'上推荐') >=0 and content.find(u'上个推荐') >= 0:
        score += 1
    if content.find(u'____') >= 0: score += 1
    if content.find(u'提问') >= 0: score += 1
    if content.find(u'说说') >= 0: score += 0.9
    if content.find(u'晒一晒') >= 0: score += 0.9
    if content.find(u'问问') >= 0: score += 0.5
    if content.find(u'请问') >= 0: score += 0.4
    if content.find(u'我们') >= 0: score += 0.5
    if content.find(u'你们') == 0: score += 1
    if content.find(u'你们') > 0: score += 1
    if content.find(u'你') >= 0: score += 0.1
    if content.find(u'自己') >= 0: score += 0.1
    if content.find(u'觉得') >= 0: score += 0.3
    if content.find(u'有没有') >= 0: score += 0.5
    if content.find(u'?') > 0 or content.find(u'?') > 0:
        score += 0.5
    if content.find(u'什么') >= 0: score += 0.2
    if content.find(u'我') >= 0: score -= 0.1
    if content.find(u'!') > 0 or content.find(u'!') > 0:
        score -= 0.3
    if len(content) >= 30: score -= 0.2
    if content.find(u'"') >= 0 or content.find(u'”') >= 0:
        score -= 0.2
    if score >= 1:
        # print "has discuss words ...... "
        logger.war(u'讨论内容格式数据\t' + content)
        return True
    return False


def is_null(content):
    """
        判断内容是否为空
    """
    if not content:
        return True
    return False


def not_null(content):
    if content:
        return True
    return False


def is_invalid_comment_len(content):
    """
    判断review是否为异常长度
    """
    if len(content) > 100 or ch_num(content) < 4:
        logger.war(u"comment中文少于6或大于100\t" + content.replace("\n", " "))
        return True
    return False

def is_invalid_title_len(content):
    """
    判断review是否为异常长度
    """
    if len(content) > 100 or ch_num(content) < 6:
        logger.war(u"title中文少于6或大于100\t" + content.replace("\n", " "))
        return True
    return False

def drop_root_keys(js, root_key_list):
    """
        去除json根节点key
    """
    for key in root_key_list:
        if js.has_key(key):
            del js[key]



def is_some_day(content):
    """
        是否存在多少日 => 例: 23"""
    return len(re.findall(r'(\d+日)',content.encode("utf8"))) > 0

def is_some_month(content):
    """
        是否存在多少月 => 例: 8"""
    return len(re.findall(r'(\d+月)', content.encode("utf8"))) > 0

def is_date(content):
    """
        是否存在年月日两者或以上搭配
    """
    date_str = [u'年', u'月', u'日']
    count = 0
    count_set = set()
    for item in date_str:
        if item in content:
            if item not in count_set:
                count_set.add(item)
                count+=1
    return count > 1

# 谨慎使用
def drop_shuxian(content):
    """
        去除竖线左边内容
    """
    if u'丨' in content:
        content = content[content.find(u'丨')+1:]
    if u'|' in content:
        content = content[content.find(u'|') + 1:]
    return content

def is_time(content):
    content = content.encode("utf8")
    for case in [r'((.*?)年(.*?)月)', r'((.*?)月(.*?)日)', r'((.*?)月(.*?)号)', r'((.*?)时(.*?)分)', r'((.*?)点(.*?)分)', r'(\d+\.\d+\.\d+)', r'(\d+-\d+-\d+)', r'(\d+_\d+_\d+)', r'(\d+/\d+/\d+)', r'(\d+:\d+)', r'(\d+月\d+)']:
        res = re.findall(case, content)
        if res:
            logger.war('时间格式数据\t' + content.replace("\n", " "))
            return True
    return False

# 80后,90后
def is_age(content):
    content = content.encode("utf8")
    res = re.findall(r'(\d+后)', content)
    if res:
        logger.war(u'80,90后格式数据\t' + content.replace("\n", " "))
        return True
    return False

# 过滤无效title
def title_filter(title):
    if has_city_words(title) or has_title_words(title) or is_invalid_title_len(title) or is_time(title):
        return True
    return False


# 过滤无效评论
def comment_filter(comment):
    if has_city_words(comment) or has_comment_words(comment) or is_invalid_comment_len(comment) or is_age(comment) or is_time(comment) or has_invalid_chars(comment):
        return True
    return False


if __name__ == '__main__':
    pass

3.8、集合、正则、字符串

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
list工具
"""

def flatten(a):
    """将多维数组转化成一维数组"""
    if not isinstance(a, (list, )):
        return [a]
    else:
        b = []
        for item in a:
            b += flatten(item)
    return b

def most_frequent_elem(a):
    """获取list中最频繁的元素"""
    return max(set(a), key = a.count)



if __name__ == '__main__':
    pass


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re

def has_time(content):
    '''
        检测是否包含时间格式数据
    :param content:
    '''
    content = content.encode("utf8")
    for case in [r'((.*?)年(.*?)月)', r'((.*?)月(.*?)日)', r'((.*?)月(.*?)号)', r'((.*?)时(.*?)分)', r'((.*?)点(.*?)分)', r'(\d+\.\d+\.\d+)', r'(\d+-\d+-\d+)', r'(\d+_\d+_\d+)', r'(\d+/\d+/\d+)', r'(\d+:\d+)', r'(\d+月\d+)']:
        res = re.findall(case, content)
        if res:
            return True
    return False

if __name__ == '__main__':
    pass


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re
import filter_util

def removeEndSymbol(content):
    """
        去除字符串中结尾句号
        例: u"你好啊。" <=> u"你好啊"
    """
    str_len = len(content)
    if str_len > 2 and content[str_len -1] == u"。" and content[str_len - 2] != u"。":
        return content[0:str_len - 1]
    return content

def removeStartAt(content):
    """
        去除字符串中@开头,并且紧跟 ':', ':', ' ' 三种情况
        例: u"@:你好啊" <=> u"你好啊"
    """
    if content.find(u'@') == 0:
        index1 = content.find(u':')
        index2 = content.find(u':')
        index3 = content.find(u' ')
        if index1 < 0:
            index1 = len(content)
        if index2 < 0:
            index2 = len(content)
        if index3 < 0:
            index3 = len(content)
        index = min(index1, index2, index3)
        content = content[index + 1:]
        if content[0] == u':' or content[0] == u':' or content[0] == u' ':
            content = content[1:]
        return content
    return content

def removeStartShape(content):
    """
        去除字符串#开始方括号对以及其中内容
        例: u"#你好啊#嘎嘎" <=> u"嘎嘎"
    """
    if content[0] == u'#':
        content = content[1:]
        if content.find(u'#') > 0:
            content = content[content.find(u'#') + 1:]
    return content


def removeEndShape(content):
    """
        去除字符串#结尾方括号对以及其中内容
        例: u"你好啊#嘎嘎#" <=> u"你好啊"
    """
    if content[len(content) -1] == u'#':
        content = content[0:len(content) - 1]
        if content.rfind(u'#') > 0:
            content = content[0: content.rfind(u'#')]
    return content


def removeEndEnglishBracket(content):
    """
        去除字符串结尾英文方括号对
        例: u"你好啊[嘎嘎]" <=> u"你好啊"
    """
    if content[len(content) -1] == u']' and content.rfind(u'[') > 0:
        return content[0: content.rfind(u'[')]
    return content

def removeStartEnglishBracket(content):
    """
        去除字符串结尾英文方括号对
        例: u"你好啊[嘎嘎]" <=> u"你好啊"
    """
    if content.startswith(u'[') and content.rfind(u']') > 0:
        return content[content.rfind(u']'):]
    return content


def removeStartChBracket(content):
    """
        去除字符串结尾英文方括号对
        例: u"你好啊[嘎嘎]" <=> u"你好啊"
    """
    if content.startswith(u'[') and content.rfind(u']') > 0:
        return content[content.rfind(u']')+1:]
    return content

def removeEndRoundBracket(content):
    """
        去除字符串结尾中文圆括号对
        例: u'你好啊(嘎嘎)' <=> u'你好啊'
    """
    if content[len(content) -1] == u')' and content.rfind(u'(') > 0:
        return content[0: content.rfind(u'(')]
    return content

def removeEndEnRoundBracket(content):
    """
        去除字符串结尾中文圆括号对
        例: u'你好啊(嘎嘎)' <=> u'你好啊'
    """
    if content[len(content) -1] == u')' and content.rfind(u'(') > 0:
        return content[0: content.rfind(u'(')]
    return content

def removeStartRoundBracket(content):
    """
        去除字符串结尾中文圆括号对
        例: u'(嘎嘎)你好啊' <=> u'你好啊'
    """
    if content.startswith == u'(' and content.rfind(u')') > 0:
        return content[content.find(u')')+1:]
    return content


def removeStartBracket(content):
    """
        去除字符串开始中文方括号对
        例: u'【你好啊】嘎嘎' <=> u'嘎嘎'
    """
    if content[0] == u'【' and content.find(u'】') > 0:
        return content[content.find(u'】') + 1:]
    return content


def removeEndBracket(content):
    """
        去除字符串开始中文方括号对
        例: u'嘎嘎【你好啊】' <=> u'嘎嘎'
    """
    if content.endswith(u'】') and content.find(u'【') > 0:
        return content[:content.find(u'【')]
    return content

def removeInnerBracket(content):
    """
        去除字符串开始中文方括号对
        例: u'中文【你好啊】嘎嘎' <=> u'嘎嘎'
    """
    if content.find(u"【") > 0 and content.find(u"】") > content.find(u"【"):
        content_res = content[:content.find(u'【')] + content[content.find(u"】") + 1:]
        return content_res
    return content


def getContentInStartBracket(content):
    """
        获取字符串开始中文方括号对中的内容
        例: u'【你好啊】嘎嘎' <=> u'你好啊'
    """
    if content[0] == u'【' and content.find(u"】") > 0:
        return content[1: content.find(u'】')]
    return ""


def removeStartChineseBracket(content):
    """
        去除字符串『符号开始的内容
        例: u'『你好啊』嘎嘎' <=> u'嘎嘎'
    """
    if content[0] == u"『" and content.find(u"』") > 0:
        return content[content.find(u"』") + 1:]
    return content


def removeStartEnglishHalfBracket(content):
    """
        去除字符串『符号开始的内容
        例: u'『你好啊』嘎嘎' <=> u'嘎嘎'
    """
    if content[0] == u"「" and content.find(u"」") > 0:
        return content[content.find(u"」") + 1:]
    return content

def removeCnEndEnglishHalfBracket(content):
    """
        去除字符串『符号开始的内容
        例: u'『你好啊』嘎嘎' <=> u'嘎嘎'
    """
    if content.endswith(u"「") and content.find(u"」") > 0:
        return content[:content.find(u"「")]
    return content


def removeSubBetweenTwoWords(content, startWord, endWord):
    if content.find(startWord) >= 0 and content.find(endWord) > 0 and content.find(startWord) < content.find(endWord):
        return content[:content.find(startWord)] + content[content.find(endWord) + 1:]
    return content



# 过长句子切分

cut_words = [u'。', u'?', u'?', u'!', u'!', u'…', u';', u';']

def find_first_symbol(content,start=0):
    min_pos = 1000000
    symbol = ""
    for item in cut_words:
        pos = content.find(item, start)
        if pos < min_pos and pos > -1:
            min_pos = pos
            symbol = item
    if min_pos != 1000000:
        return min_pos, symbol
    else:
        return -1, symbol

def cut_line(content, start=0):
    pos,symbol = find_first_symbol(content, start)
    while True:
        if len(content) -1 > pos:
            if content[pos+1] == symbol:
                pos+=1
            else:
                break
        else:
            break
    return pos

def get_cut_content(content):
    new_list = []
    cut_pos = cut_line(content)
    while True:
        pre_str = content[:cut_pos + 1]
        end_str = content[cut_pos+1:]
        if cut_pos != -1 :
            if filter_util.ch_num(pre_str) > 3:
                new_list.append(pre_str)
                content = end_str
                cut_pos = cut_line(content)
            else:
                content = pre_str + end_str
                cut_pos= cut_line(content, start=cut_pos+1)
        else:
            new_list.append(end_str)
            break
    while '' in new_list:
        new_list.remove('')
    arr_len = len(new_list)
    if arr_len > 1:
        if filter_util.ch_num(new_list[arr_len-1]) < 3:
            new_list[arr_len-2] = new_list[arr_len-2] + new_list[arr_len-1]
            new_list.pop()
    res_list = []
    for item in new_list:
        item = item.lstrip(u')').lstrip(u')').strip()
        res_list.append(item)
    return res_list


def new_split_list(lst, num):
    new_list = []
    while '' in lst:
        lst.remove('')
    for item in [lst[i:i+num] for i in xrange(0,len(lst),num)]:
        new_list.append("".join(item))
    return new_list

in_num_word = [u'二',u'三',u'四',u'五',u'六',u'七',u'八',u'九',u'十',u'1', u'2', u'3', u'4',u'5',u'6',u'7', u'8', u'9',u'0']

def f_num_word(content):
    for item in in_num_word:
        if content.startswith(item+"."):
            return True
    return False


def cut_sentence(content):
    if f_num_word(content):
        return content
    else:
        lst = get_cut_content(content)
        new_list = []
        if len(lst) > 3:
            if len(lst) < 7:
                new_list = new_split_list(lst, 2)
            else:
                new_list = new_split_list(lst, 3)
        else:
            new_list = lst
        return "||".join(new_list).strip().lstrip(u')').lstrip(u')').rstrip(u'(').rstrip(u'(')


if __name__ == '__main__':
    pass

参考:https://github.com/CuichenTao/util4py

3.9、toolkit或者toolkity

开源地址:https://github.com/ShichaoMa/toolkit

安装命令:pip install toolkity

3.10、awesome-python

开源地址:https://github.com/vinta/awesome-python

使用手册:python-style-guide

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159236.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Cpu指令重排_cpu的指令集

    Cpu指令重排_cpu的指令集Cpu为了提高效率会对指令进行重排序,以适合cpu的顺序运行。但是指令重排会遵守As-if-serial的规则,就是所有的动作(Action)都可以为了优化而被重排序,但是必须保证它们重排序后的结果和程序代码本身的应有结果是一致的。所以这种情况在单线程中不会出现什么问题。而对于多线程,这个规则就失效了,所以可能会导致结果出现问题。解决办法就是内存屏障,也叫内存栅栏。是一种屏…

    2022年10月17日
  • iframe关闭父页面(iframe嵌套https页面)

    iframe是html标签,具有一般标签的属性:widthiframe的高度heightiframe的宽度srciframe里面加载的页面urlname可以通过window.frames[name]获取到frameid和其他的html标签id一样在主页面中通过iframe标签可以引入其他子页面其中可以通过以下方法获取到iframe内部子页面的信息&amp;amp;amp;amp;lt;!–…

  • zyltdlhr

    zyltdlhr

  • SwipeRefreshLayout 与 CoordinatorLayout 嵌套刷新[通俗易懂]

    SwipeRefreshLayout 与 CoordinatorLayout 嵌套刷新[通俗易懂]SwipeRefreshLayout与CoordinatorLayout嵌套刷新 1.动态设置SwipeRefreshLayout的是否可以刷新setEnable(booleanisEnable); 2.设置SwipRefreshLayout刷新图标的位置setProgressViewOffset(true,-20,100);首先看SwipeRefreshLa

  • UFT VB脚本

    UFT VB脚本UFTVB脚本分类: 自动化2015-07-1323:48 49人阅读 评论(0) 收藏 举报OnErrorResumeNext REMMsgbox(Err.Number)REMMsgbox(Err.Source)REMMsgbox(Err.Description)REM###############################

  • 经典排序算法 – 基数排序Radix sort

    经典排序算法 – 基数排序Radix sort

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号