免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: wqjwftcaqr
打印 上一主题 下一主题

我这里想替换或者删除字符串里的信息,但是信息里面有变量怎么弄? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-03-08 14:42 |只看该作者
回复 10# wqjwftcaqr


有区别么?
  1. s="""<a href="?stypes=通用名&key=妥洛特罗贴剂">妥洛特罗贴剂</a><a href="?stypes=通用名&key=线程">线程</a>"""
  2. print ''.join([ss.split('>')[-1:][0] for ss in s.split('</a>')])
复制代码

论坛徽章:
0
12 [报告]
发表于 2010-03-08 15:07 |只看该作者
回复  wqjwftcaqr


有区别么?
luffy.deng 发表于 2010-03-08 14:42



    我是要取好几个信息,使用split('<td align="center">')

                  <tr bgcolor="#DFEEFC" onmouseover=onRowOver(this,0); onclick=onRowClicked(this,0); onmouseout=onRowOut(this,0);>
        <td align="center">49</td>
        <td align="center"><a href="?stypes=通用名&key=甲羟孕酮">甲羟孕酮</a></td>
        <td align="center">片剂</td>
        <td align="center">瓶</td>
        <td align="center">4mg</td>
        <td align="center">100</td>
                <td align="center">5.4</td>

论坛徽章:
0
13 [报告]
发表于 2010-03-08 16:31 |只看该作者
回复 12# wqjwftcaqr
这样的话你就不如找个html解析库了,比如
  1. import HTMLParser
  2. ht="""<html><table><tr><td align="center">49</td><td align="center"><a href="?stypes=通用名&key=甲羟孕酮">甲羟孕酮</a></td>
  3. <td align="center">片剂</td><td align="center">瓶</td><td align="center">4mg</td>
  4. <td align="center">100</td><td align="center">5.4</td></tr></table>
  5. </html>
  6. """
  7. class parseht(HTMLParser.HTMLParser):
  8.     def handle_data(self, text):
  9.         print ''.join(text.split())
  10. l = parseht()
  11. l.feed(ht)
复制代码

论坛徽章:
0
14 [报告]
发表于 2010-03-08 17:21 |只看该作者
回复  wqjwftcaqr
这样的话你就不如找个html解析库了,比如
luffy.deng 发表于 2010-03-08 16:31



    效果是不错的,>>> l = parseht()
>>> l.feed(ht)
49
甲羟孕酮

片剂

4mg

100
5.4

但是我后面用的方法都不能用了,没有网页代码让我spilt了,我要利用 网页代码 来自动判断有多少列,添加时自动在最后一列打个回车,再循环进 文本文件
for abc in mydata:#循环列表准备写入文件
                if abc != 'enter':#条件选择,这里为了在文件里可以换行
                    outfile.write('%s\t'%abc)
                elif abc == 'enter':
                    counter += 1
                    print counter
                    outfile.write('%s\n'%WSP)
下面是一部分网页源代码的样子
<td align="center">1</td>
        <td align="center"><a href="?stypes=通用名&key=0.9%氯化钠">0.9%氯化钠</a></td>
        <td align="center">注射液</td>
        <td align="center">支</td>
        <td align="center">10ml</td>
        <td align="center">1</td>
                <td align="center">.27</td>
                <td><a href='http://zb.yy960.com/seeks.aspx?pdname=0.9%氯化钠' target='_blank'>我要代理</a></td>
            </tr>

                  <tr bgcolor="#DFEEFC" onmouseover=onRowOver(this,15); onclick=onRowClicked(this,15); onmouseout=onRowOut(this,15);>
        <td align="center">55</td>
        <td align="center"><a href="?stypes=通用名&key=抗五步蛇毒血清">抗五步蛇毒血清</a></td>
        <td align="center">粉针</td>
        <td align="center">支</td>
        <td align="center">2000U</td>
        <td align="center">1</td>
                <td align="center">241.666666666667</td>
                <td><a href='http://zb.yy960.com/seeks.aspx?pdname=抗五步蛇毒血清' target='_blank'>我要代理</a></td>
            </tr>

                  <tr bgcolor="#DFEEFC" onmouseover=onRowOver(this,16); onclick=onRowClicked(this,16); onmouseout=onRowOut(this,16);>
        <td align="center">62</td>
        <td align="center"><a href="?stypes=通用名&key=利巴韦林">利巴韦林</a></td>
        <td align="center">注射液</td>
        <td align="center">支</td>
        <td align="center">5ml:0.5g</td>
        <td align="center">1</td>
                <td align="center">.98</td>
                <td><a href='http://zb.yy960.com/seeks.aspx?pdname=利巴韦林' target='_blank'>我要代理</a></td>
            </tr>

论坛徽章:
0
15 [报告]
发表于 2010-03-08 22:47 |只看该作者
本帖最后由 luffy.deng 于 2010-03-08 22:55 编辑

判断多少列是很容易解决的问题,我用HTMLParser写一个比较难看的,仅作参考。还是找一个好用的解析库吧。
  1. ht = """<html>aa
  2. <table>
  3. <tr>
  4.        <td align="center">1</td>
  5.         <td align="center"><a href="?stypes=通用名&key=0.9%氯化钠">0.9%氯化钠</a></td>
  6.         <td align="center">注射液</td>
  7.         <td align="center">支</td>
  8.         <td align="center">10ml</td>
  9.         <td align="center">1</td>
  10.         <td align="center">.27</td>
  11.         <td><a href='http://zb.yy960.com/seeks.aspx?pdname=0.9%氯化钠' target='_blank'>我要代理</a></td>
  12.         </tr>
  13.         <tr bgcolor="#DFEEFC" onmouseover=onRowOver(this,15); onclick=onRowClicked(this,15); onmouseout=onRowOut(this,15);>
  14.         <td align="center">55</td>
  15.         <td align="center"><a href="?stypes=通用名&key=抗五步蛇毒血清">抗五步蛇毒血清</a></td>
  16.         <td align="center">粉针</td>
  17.         <td align="center">支</td>
  18.         <td align="center">2000U</td>
  19.         <td align="center">1</td>
  20.         <td align="center">241.666666666667</td>
  21.         <td><a href='http://zb.yy960.com/seeks.aspx?pdname=抗五步蛇毒血清' target='_blank'>我要代理</a></td>
  22. </tr>
  23. <tr bgcolor="#DFEEFC" onmouseover=onRowOver(this,16); onclick=onRowClicked(this,16); onmouseout=onRowOut(this,16);>
  24.         <td align="center">62</td>
  25.         <td align="center"><a href="?stypes=通用名&key=利巴韦林">利巴韦林</a></td>
  26.         <td align="center">注射液</td>
  27.         <td align="center">支</td>
  28.         <td align="center">5ml:0.5g</td>
  29.         <td align="center">1</td>
  30.                 <td align="center">.98</td>
  31.                 <td><a href='http://zb.yy960.com/seeks.aspx?pdname=利巴韦林' target='_blank'>我要代理</a></td>
  32.             </tr>

  33. </table>
  34. xx
  35. </html>"""

  36. from HTMLParser import HTMLParser
  37. class parseht(HTMLParser):
  38.    def  __init__(self):
  39.       self.res=[]
  40.       HTMLParser.__init__(self)
  41.    def  handle_data(self,text):
  42.       text=text.strip('\n').strip(' ').strip('\b').strip('\r\n')
  43.       if text !='':
  44.          self.res.append(text)
  45.    def  handle_starttag(self, tag, attrs):
  46.       if tag == 'tr':
  47.          self.res.append('tr')
  48.    def  handle_endtag(self,tag):
  49.       if tag == 'tr':
  50.          self.res.append('/tr')

  51. l = parseht()
  52. l.feed(ht)
  53. l.res.reverse()
  54. while l.res:
  55.    if l.res.pop() !='tr'
  56.       continue
  57.    while l.res:
  58.       r=l.res.pop()
  59.       if r=='/tr':
  60.          break
  61.       print r,
  62.    print '\n'   
  63. l.close()
复制代码
输出是这个样子的:
1 0.9%氯化钠 注射液 支 10ml 1 .27 我要代理

55 抗五步蛇毒血清 粉针 支 2000U 1 241.666666666667 我要代理

62 利巴韦林 注射液 支 5ml:0.5g 1 .98 我要代理

论坛徽章:
0
16 [报告]
发表于 2010-03-09 08:13 |只看该作者
上面那个太难看了,稍微改了一下
  1. from HTMLParser import HTMLParser
  2. class parseht(HTMLParser):
  3.     def __init__(self):
  4.         self.res=[]
  5.         HTMLParser.__init__(self)
  6.     def  _handle_data(self,text):
  7.         if not text.isspace():
  8.             self.res[-1].append(text)
  9.     def  handle_starttag(self, tag, attrs):
  10.         if tag == 'tr':
  11.             self.res.append([])
  12.             setattr(parseht,'handle_data',self._handle_data)
  13.     def  handle_endtag(self,tag):
  14.         if tag == 'tr':
  15.             setattr(parseht,'handle_data',HTMLParser.handle_data)
  16.          
  17. l = parseht()
  18. l.feed(ht)
  19. l.close()
  20. for n in l.res:
  21.     print ','.join(n)
复制代码
输出是这样的,不知道是不是你要的结果
1,0.9%氯化钠,注射液,支,10ml,1,.27,我要代理
55,抗五步蛇毒血清,粉针,支,2000U,1,241.666666666667,我要代理
62,利巴韦林,注射液,支,5ml:0.5g,1,.98,我要代理

论坛徽章:
0
17 [报告]
发表于 2010-03-09 09:19 |只看该作者
上面那个太难看了,稍微改了一下输出是这样的,不知道是不是你要的结果
1,0.9%氯化钠,注射液,支,10ml,1,.2 ...
luffy.deng 发表于 2010-03-09 08:13



    非常感谢你的帮助

论坛徽章:
0
18 [报告]
发表于 2010-03-10 10:00 |只看该作者
为什么不更简单一点
# -*- coding: cp936 -*-
import re
s = '<a href="?stypes=通用名&key=妥洛特罗贴剂">妥洛特罗贴剂'
print re.sub('<a href="\?stypes=通用名&key=(.*)">','', s)

论坛徽章:
0
19 [报告]
发表于 2010-03-14 18:24 |只看该作者
不太懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP