• 字符串处理


      1 # coding:utf-8
      2 
      3 class TidyText(object):
      4     def __init__(self,string='',begin='',last=''):
      5         super(TidyText,self).__init__()
      6         self.result=string
      7         self.begin=begin
      8         self.last=last
      9         self.tags={
     10             '<a': '</a>',
     11             '<table': '</table>',
     12             '<tr': '</tr>',
     13             '<td': '</td>',
     14             '<p': '</p>',
     15             '<font': '</font>',
     16             '<div': '</div>',
     17             '<span': '</span>',
     18             '<tbody': '</tbody>',
     19             '<img': '</img>',
     20             '<script': '</script>',
     21             '<strong': '</strong>',
     22             '<br': '</br>',
     23             '<h': '</h>',
     24             '<form': '</form>',
     25             '<frame': '</frame>',
     26             '<li': '</li>',
     27             '<ul': '</ul>',
     28             '<dd': '</dd>',
     29             '<dt': '</dt>',
     30             '<iframe': '</iframe>',
     31             '<sub': '</sub>',
     32             '<A': '</A>',
     33             '<TABLE': '</TABLE>',
     34             '<TR': '</TR>',
     35             '<TD': '</TD>',
     36             '<P': '</P>',
     37             '<FONT': '</FONT>',
     38             '<DIV': '</DIV>',
     39             '<SPAN': '</SPAN>',
     40             '<TBODY': '</TBODY>',
     41             '<IMG': '</IMG>',
     42             '<SCRIPT': '</SCRIPT>',
     43             '<STRONG': '</STRONG>',
     44             '<BR': '</BR>',
     45             '<H': '</H>',
     46             '<FORM': '</FORM>',
     47             '<FRAME': '</FRAME>',
     48             '<LI': '</LI>',
     49             '<UL': '</UL>',
     50             '<DD': '</DD>',
     51             '<DT': '</DT>',
     52             '<IFRAME': '</IFRAME>',
     53             '<SUB': '</SUB>',
     54             '&lt;a': '&lt;/a&gt;',
     55             '&lt;table': '&lt;/table&gt;',
     56             '&lt;tr': '&lt;/tr&gt;',
     57             '&lt;td': '&lt;/td&gt;',
     58             '&lt;p': '&lt;/p&gt;',
     59             '&lt;font': '&lt;/font&gt;',
     60             '&lt;div': '&lt;/div&gt;',
     61             '&lt;span': '&lt;/span&gt;',
     62             '&lt;tbody': '&lt;/tbody&gt;',
     63             '&lt;img': '&lt;/img&gt;',
     64             '&lt;script': '&lt;/script&gt;',
     65             '&lt;strong': '&lt;/strong&gt;',
     66             '&lt;br': '&lt;/br&gt;',
     67             '&lt;h': '&lt;/h&gt;',
     68             '&lt;form': '&lt;/form&gt;',
     69             '&lt;frame': '&lt;/frame&gt;',
     70             '&lt;li': '&lt;/li&gt;',
     71             '&lt;ul': '&lt;/ul&gt;',
     72             '&lt;dd': '&lt;/dd&gt;',
     73             '&lt;dt': '&lt;/dt&gt;',
     74             '&lt;iframe': '&lt;/iframe&gt;',
     75             '&lt;sub': '&lt;/sub&gt;',
     76             '&lt;A': '&lt;/A&gt;',
     77             '&lt;TABLE': '&lt;/TABLE&gt;',
     78             '&lt;TR': '&lt;/TR&gt;',
     79             '&lt;TD': '&lt;/TD&gt;',
     80             '&lt;P': '&lt;/P&gt;',
     81             '&lt;FONT': '&lt;/FONT&gt;',
     82             '&lt;DIV': '&lt;/DIV&gt;',
     83             '&lt;SPAN': '&lt;/SPAN&gt;',
     84             '&lt;TBODY': '&lt;/TBODY&gt;',
     85             '&lt;IMG': '&lt;/IMG&gt;',
     86             '&lt;SCRIPT': '&lt;/SCRIPT&gt;',
     87             '&lt;STRONG': '&lt;/STRONG&gt;',
     88             '&lt;BR': '&lt;/BR&gt;',
     89             '&lt;H': '&lt;/H&gt;',
     90             '&lt;FORM': '&lt;/FORM&gt;',
     91             '&lt;FRAME': '&lt;/FRAME&gt;',
     92             '&lt;LI': '&lt;/LI&gt;',
     93             '&lt;UL': '&lt;/UL&gt;',
     94             '&lt;DD': '&lt;/DD&gt;',
     95             '&lt;DT': '&lt;/DT&gt;',
     96             '&lt;IFRAME': '&lt;/IFRAME&gt;',
     97             '&lt;SUB': '&lt;/SUB&gt;',
     98         }
     99         self.fulltag=True
    100         self.reservetags={}     # '<a':0 仅仅删除 <a...>,  '<a':'</a>' 删除全部
    101 
    102         self.junk=['&nbsp;''
    ','
    ','	']
    103         self.reservejunk=[]
    104         self.dels=[]
    105 
    106     def gets(self):
    107         self.check()        #检查输入string是否是字符串格式
    108         self.tidytags()
    109         return self.result
    110 
    111     def check(self):
    112         if type(self.result)!=type(''):
    113             return 'type error, str is needed'
    114         else:
    115             self.result=self.get(self.result,self.begin,self.last,cycle=0,include=0)[0]
    116 
    117     def tidytags(self):
    118         if len(self.reservetags)>0:
    119             #从总taqg list里除去这部分要保留的.
    120             for tag in list(self.reservetags.keys()):
    121                 try:
    122                     self.tags.pop(tag)
    123                 except Exception as e:
    124                     print(u'保留字符串不存在')
    125                     pass
    126         #保留字符串处理:
    127             for ktag,vtag in list(self.reservetags.items()):
    128                 if vtag==0:
    129                     self.result=self.removehtml(self.result,ktag,'>')
    130                 elif vtag==-1:
    131                     pass
    132                 else:
    133                     self.result=self.removehtml(self.result,ktag,vtag)
    134         #全局字符串处理
    135         for ktag,vtag in list(self.tags.items()):
    136             if self.fulltag==True:
    137                 self.result=self.removehtml(self.result,ktag,vtag)
    138             else:
    139                 self.result = self.removehtml(self.result, ktag, '>')
    140         #垃圾字符串处理
    141         if len(self.reservejunk)>0:
    142             for junk in self.reservejunk:
    143                 try:
    144                     self.junk.remove(junk)
    145                 except Exception as e:
    146                     print('垃圾字符串不存在')
    147                     pass
    148         for removejunk in self.junk:
    149             self.result.replace(removejunk,'')
    150         #字定义额外字符串删除:
    151         if len(self.dels)>0:
    152             for i in self.dels:
    153                 self.result.replace(i,'')
    154 
    155     def removehtml(self,string,begin,last):
    156         s=string
    157         rem=self.get(s,begin,last,cycle=1,include=1)
    158         if len(rem)>1:
    159             for i in rem:
    160                 s=s.replace(i,'')
    161         return s
    162 
    163     def get(self,string, begin, last, cycle=0, include=0):
    164         if type(string) == type(''):
    165             if cycle == 0:
    166                 startpoint = string.find(begin)
    167                 endpoint = startpoint + len(begin) + string[startpoint + len(begin):].find(last)
    168                 if startpoint < 0 or endpoint < 0:  # 找不到开头或者结尾,直接返回
    169                     print(u'首尾字符串找不到')
    170                     return [string]
    171                 if include == 0:
    172                     return [string[startpoint + len(begin):endpoint]]
    173                 else:
    174                     return [begin + string[startpoint + len(begin):endpoint] + last]
    175             elif cycle == 1:
    176                 records = []
    177                 x = string
    178                 while x.find(begin) >= 0:
    179                     startpoint = x.find(begin)
    180                     endpoint = startpoint + len(begin) + x[startpoint + len(begin):].find(last)
    181                     if startpoint < 0 or endpoint < 0:  # 找不到开头或者结尾,直接返回
    182                         print(u'首尾字符串找不到')
    183                         return [string]
    184                     if include == 0:
    185                         records.append(x[startpoint + len(begin):endpoint])
    186                     else:
    187                         records.append(begin + x[startpoint + len(begin):endpoint] + last)
    188                     x = x[endpoint + len(last):]
    189                 return records
    190         else:
    191             return ['error:not string type']
  • 相关阅读:
    maven build和push image中遇到的坑(学习过程记录)
    jmeter中beanshell postprocessor结合fastjson库提取不确定个数的json参数
    (转)细说linux挂载
    《软件性能测试从零开始》要点摘录
    《软件测试经验与教训》内容摘录
    关于敏捷的一点感受
    xpath定位中starts-with、contains、text()的用法
    python中的threading模块使用说明
    (转)Linux下用户组、文件权限详解
    LeetCode——树
  • 原文地址:https://www.cnblogs.com/pythonClub/p/9854381.html
Copyright © 2020-2023  润新知