Guest User

Untitled

a guest
Jun 27th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.98 KB | None | 0 0
  1. import pymssql
  2. import re
  3. import time
  4.  
  5. start = time.clock( )
  6. #数据库连接
  7. conn=pymssql.connect(host='(local)',user='sa',password='123456',database='faqi')
  8. #打开游标
  9. cur=conn.cursor();
  10. if not cur:
  11. raise Exception('数据库连接失败!')
  12. else:
  13. print("数据库链接成功")
  14.  
  15. sql = 'select TOP 100000 * from AdministrativeCase '
  16.  
  17. #执行sql,获取所有数据
  18. cur.execute(sql)
  19.  
  20. # Python查询Mysql/SQL SERVER 使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
  21. rs = cur.fetchall()
  22. # rs1 = list(rs)
  23. j = 0
  24. for i in rs:
  25. txt = str(i[7])
  26. # print(txt)
  27. j+=1
  28. # print('这是第' + str(j) + '条数据' + txt.encode('latin-1').decode('gbk'))
  29. # print(i[20])
  30. # 这一组是去除<span> ....</span>
  31. str1 = re.sub(r'<span .*?>', '', txt)
  32. str1 = re.sub(r'</span>', '', str1)
  33.  
  34.  
  35. # 这一组是去除<SPAN> ....</SPAN>
  36. str1 = re.sub(r'<SPAN .*?>', '', str1)
  37. str1 = re.sub(r'</SPAN>', '', str1)
  38.  
  39.  
  40. # 这一组是去除<FONT> ....</FONT>
  41. str1 = re.sub(r'<FONT .*?>', '', str1)
  42. str1 = re.sub(r'</FONT>', '', str1)
  43.  
  44. # 这一组是去除<font> ....</font>
  45. str1 = re.sub(r'<font .*?>', '', str1)
  46. str1 = re.sub(r'</font>', '', str1)
  47.  
  48.  
  49. # 这一组是去除<p style="text-align:center;line-height:38px">...</p>
  50. str1 = re.sub(r'<p .*?>', '<p>', str1)
  51. # # 这一组是去除<P style="text-align:center;line-height:38px">...</P>
  52. str1 = re.sub(r'<P .*?>', '<p>', str1)
  53. str1 = re.sub(r'</P>', '</p>', str1)
  54.  
  55. # # 这一组是去除<img width= ..... #ddd"/>
  56. str1 = re.sub(r'<img .*? solid #ddd"/>', '', str1)
  57.  
  58. # 这一组是去除<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>
  59. str1 = re.sub(r'<?xml:namespace .*?>', '', str1)
  60. str1 = str1.replace('<o:p></o:p>', '')
  61.  
  62. # 这一组是去除<<strong>> ....</<strong>>
  63. str1 = str1.replace('<strong>', '')
  64. str1 = str1.replace('</strong>', '')
  65.  
  66.  
  67. # <st1:chsdate year="2017" month="3" day="30" islunardate="False" isrocdate="False" w:st="on">...</st1:chsdate>
  68. str1 = re.sub(r'<st1:chsdate .*?>','',str1)
  69. str1 = re.sub(r'</st1:chsdate>','',str1)
  70. # print('这是第' + str(j) + '条数据' + str1.encode('latin-1').decode('gbk'))
  71.  
  72. # 这组是替换掉去开头<p><p> =><p>
  73. str1 = str1.replace(r'<p><p>', '<p>')
  74.  
  75. # 这组是 替换掉<br> 为</p><p>
  76. str1 = str1.replace('<br>', '</p><p>').replace('</br>', '</p><p>').replace('<br/>','</p><p>')
  77. str1 = str1.replace('<BR>', '</p><p>').replace('</BR>', '</p><p>')
  78.  
  79. # 这里是处理掉<p> &nbsp;</p> 这无用的标签
  80. str1 = str1.replace('<p>&nbsp;</p>','')
  81.  
  82. # 这组是处理<p></p>这种无用标签和所有的&nbsp;
  83. str1 = re.sub(r'<p></p>', '', str1)
  84. str1 = re.sub(r'&nbsp;', '', str1)
  85. str1 = re.sub(r'<p></p>', '', str1)
  86. # 设置编码,python3
  87. # str1 = str1.encode('latin-1').decode('gbk')
  88. # str1 = str1.encode("utf-8").decode("latin1")
  89.  
  90.  
  91. # 这组是处理落款时间的格式
  92. yy = r'[ 一 二 三 四 五 六 七 八 九 十 〇 ○]{1,4}年[一 二 三 四 五 六 七 八 九 十 〇]{1,2}月[一 二 三 四 五 六 七 八 九 十 〇]{1,2}日|\d{4}-\d{1,2}-\d{1,2}'
  93. str2 = re.findall(re.compile(yy), str1)
  94. if len(str2) != 0:
  95. find1 = str1.find(str2[-1])
  96. if find1 > 100:
  97. # 如果存在落款时间就加上个<p style="text-align: right;"> 让它居右显示
  98. str1 = str1.replace(str2[-1], ''.join(['<p style="text-align: right;">', str2[-1], '</p>']))
  99. else:
  100. pass
  101.  
  102. else:
  103. pass
  104.  
  105. # 这组是处理落款单位
  106. yy2 = r'[\u4E00-\u9FA5\uF900-\uFA2D]+[\局 ,\协会]'
  107. rs = re.findall(re.compile(yy2), str1)
  108. if len(rs) != 0 :
  109. find1 = str1.find(rs[-1])
  110. if find1 > 100:
  111. str1 = str1.replace(rs[-1], ''.join(['<p style="text-align: right;">' + rs[-1] + '</p>']))
  112. else:
  113. pass
  114.  
  115. else:
  116. pass
  117.  
  118. # 处理多出来的</p><p><p style="text-align: right;">
  119. str1 = re.sub(r'</p><p><p style="text-align: right;">','</p><p style="text-align: right;">',str1)
  120. str1 = re.sub(r'</p></p><p>','</p>',str1)
  121. str1 = re.sub(r'</p></p></p>','</p>',str1)
  122. str1 = str1.encode('latin-1').decode('gbk')
  123.  
  124. # 全文update 这个字段插入时也会乱码,必须先转码如下
  125. str2 = str(i[17])
  126. str2 = str2.encode('latin-1').decode('gbk')
  127.  
  128.  
  129. # 插入到数据库中去 因为源表中的:文章字数量 i(int)[11]、isDelete(int) i[20] 、updateDate(nvarchar(50)) i[21] 字段允许为空(NULL)python读取后为None针对i[11] 和i[20] ,会报错能将None转化为varchar
  130. # 所以加个判断当这三个的值None即数据库中为NULL时直接不插入到新表
  131.  
  132. if i[20] or i[21]==None :
  133. sql2 = "INSERT INTO table6(ID,标题,行政处罚决定书文号,[被处罚单位(被处罚人)],[法定代表人(或单位负责人)],执法部门,作出行政处罚的日期,全文,唯一标志,区域,机构,文章字数量,区域news,机构news,区域news1,处罚对象,state,全文update,标题update,UserName) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"\
  134. % (i[0], i[1], i[2], i[3], i[4], i[5], i[6], str1, i[8], i[9], i[10],i[11], i[12], i[13], i[14], i[15], i[16],str2, i[18], i[19])
  135. else:
  136. sql2 = "INSERT INTO table6(ID,标题,行政处罚决定书文号,[被处罚单位(被处罚人)],[法定代表人(或单位负责人)],执法部门,作出行政处罚的日期,全文,唯一标志,区域,机构,文章字数量,区域news,机构news,区域news1,处罚对象,state,全文update,标题update,UserName,isDelete,updateDate) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (i[0], i[1], i[2], i[3], i[4], i[5], i[6], str1, i[8], i[9], i[10], i[11], i[12], i[13], i[14], i[15], i[16],str2, i[18], i[19],i[20],i[21])
  137. cur.execute(sql2)
  138. conn.commit()
  139. conn.close()
  140. end = time.clock( )
  141. print(str(end-start))
Add Comment
Please, Sign In to add comment