zoukankan      html  css  js  c++  java
  • 使用pycharm以及用pycharm句子切分调试

    c在D盘建立了个文件夹,然后把segment1.py文件放进去。

    然后双击segment1,就自动用pycharm打开了。然后就可以运行和debug。之前最开始的时候我segment1.py文件放桌面上,结果用pycharm一打开,桌面的文件全都进去了。这不合适。

    所以才在D盘建立个文件夹,这样在用pycharm打开,只会把建的文件夹里面的东西弄进去。

    import re
    
    def segment(text):
        article_string = text
        article_string = article_string.replace("。“", "ψ")
        # print('替换后的文章',article_string)
        article_string = article_string.replace("
    ", "ξ")
    
        #outres2 = (re.split(r"([。,'ψ','ξ',?,!,;,?,!,。,;,……,…])", article_string))
        outres2 = (re.split(r"([。'ψ''ξ'?!;?!;…])", article_string)) #这个才是正确的用法,上一行那种用法也不对,逗号会被当作分隔符。
        # for item in ('。', 'ψ', 'ξ', '?', '!', '。', ';', '……', '…'):
        #     outres2 = re.split(item, article_string)
        # print(outres2)
        ############
        replaced_symbol = ['ψ', 'ξ']
        pre_symbol = ['''。”''', "
    "]
        for sym_i in range(len(replaced_symbol)):
            for term_j in range(len(outres2)):
                if replaced_symbol[sym_i] == outres2[term_j]:
                    outres2[term_j] = pre_symbol[sym_i]
        ############
        final_res_list = []
        for i_th in range(0, len(outres2), 2):
            if (i_th + 1) < len(outres2) and len(outres2[i_th]) > 0:
                final_res_list.append(outres2[i_th] + outres2[i_th + 1])
        if len(outres2) % 2 == 1:
            final_res_list.append(outres2[-1])
        return final_res_list
    
    
    if __name__ == "__main__":
        text = '''原标题:红芯国产浏览器涉嫌采用谷歌Chrome内核造假 联合创始人回应称非抄袭站巨人肩膀上做了创新 |新京报财讯
    
          新京报快讯(记者 梁辰 吴荣奎 实习生杨璐萍 陈诗怡)8月16日,红芯国产浏览器被爆出涉嫌造假,以谷歌浏览器Chrome内核换皮打造成“自主可控的国产浏览器”。该公司15日刚宣布完成2.5亿元的C轮融资,投资方刚包括上市公司、晨兴资本、达晨资本和IDG资本。
    
    
          此前,该公司还曾与中科院联合成立“移动应用与红芯云安全联合实验室”,声称要做“中国芯”。'''
    
        print(segment(text))

    之前split是按 |  来区分的,

    outres2 = (re.split(r"([。|'ψ'|'ξ'|?|!|;|?|!|。|;|……|…])", article_string))
    这样就会导致,

    这种情况发生,所以后来参考了。re.split用法。还是tangxin找的这个链接 https://blog.csdn.net/hawkerou/article/details/53518154 ,附录中会附上这个链接的内容。

    接下来看看调试,就是把 r"([。|'ψ'|'ξ'|?|!|;|?|!|。|;|……|…])" 里面符号一个个减掉,看看输出的情况。结果发现,第一个句号 就会导致如上的 | ,后来决定用链接中,号方法,才解决掉。

    pycharm使用小技巧:

      ALT+ CTRL + L 就是格式化代码(只是对当前文件内容,而不是整个工程)

     

    1的话,你可以双击,可以看到里面具体每个元素。

    2.你可以点击进入后,对变量赋值

     

    从而查看执行情况。

    3 是单步调试。

      接下来附上链接中的内容:

    python字符串切割:str.split()和re.split()对比

    1、str.split不支持正则及多个切割符号,不感知空格的数量,比如用空格切割,会出现下面情况。

    >>> s1="aa bb  cc"
    >>> s1.split(' ')
    ['aa', 'bb', '', 'cc']
    
    因此split只适合简单的字符分割

    2、re.split,支持正则及多个字符切割

    >>> print line
    abc aa;bb,cc | dd(xx).xxx 12.12'    xxxx
    按空格切
    >>> re.split(r' ',line)
    ['abc', 'aa;bb,cc', '|', 'dd(xx).xxx', "12.12'	xxxx"]
    加将空格放可选框内[]内
    >>> re.split(r'[ ]',line)
    ['abc', 'aa;bb,cc', '|', 'dd(xx).xxx', "12.12'	xxxx"]
    按所有空白字符来切割:s([	
    
    fv])S(任意非空白字符[^	
    
    fv]
    >>> re.split(r'[s]',line)
    ['abc', 'aa;bb,cc', '|', 'dd(xx).xxx', "12.12'", 'xxxx']
    多字符匹配
    >>> re.split(r'[;,]',line)
    ['abc aa', 'bb', "cc | dd(xx).xxx 12.12'	xxxx"]
    >>> re.split(r'[;,s]',line)
    ['abc', 'aa', 'bb', 'cc', '|', 'dd(xx).xxx', "12.12'", 'xxxx']
    使用括号捕获分组的适合,默认保留分割符
    re.split('([;])',line)
    ['abc aa', ';', "bb,cc | dd(xx).xxx 12.12'	xxxx"]
    去掉分隔符,加?:
    >>> re.split(r'(?:;)',line)
    ['abc aa', "bb,cc | dd(xx).xxx 12.12'	xxxx"]
    
    
    
  • 相关阅读:
    协方差矩阵
    VS2010+C#+EmguCV 配置详解
    OpenCv,EmguCv及.net之间的互动(The Interaction of OpenCv, EmguCv AND .net)
    EmguCV学习 与opencv的区别和联系
    redis新手入门,摸不着头脑可以看看<二>
    java常用工具类[待补充]
    redis新手入门,摸不着头脑可以看看<一>
    用java代码发送http请求
    Date和long类型互转
    WEB-INF目录下文件复制的几种方式
  • 原文地址:https://www.cnblogs.com/www-caiyin-com/p/9496768.html
Copyright © 2011-2022 走看看