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"]
    
    
    
  • 相关阅读:
    hdu 2485 Destroying the bus stations 迭代加深搜索
    hdu 2487 Ugly Windows 模拟
    hdu 2492 Ping pong 线段树
    hdu 1059 Dividing 多重背包
    hdu 3315 My Brute 费用流,费用最小且代价最小
    第四天 下载网络图片显示
    第三天 单元测试和数据库操作
    第二天 布局文件
    第一天 安卓简介
    Android 获取存储空间
  • 原文地址:https://www.cnblogs.com/www-caiyin-com/p/9496768.html
Copyright © 2011-2022 走看看