LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1040|回复: 4

python 的pattern match问题

[复制链接]
发表于 2004-12-15 14:09:13 | 显示全部楼层 |阅读模式

  1. #!/usr/bin/env python
  2. import sys, string

  3. def find_string(filename, target_str):
  4.         lines=open(filename).readlines()
  5.         print lines,"\n"
  6.         c=0
  7.         for i in range(len(lines)):
  8.                 words=lines[i].split(' ')
  9.                 print words,"\n"
  10.                 c+=words.count("abc")
  11.                 print c,"\n"
  12.         return c

  13. if __name__=='__main__':
  14.         a=find_string(sys.argv[1], sys.argv[2])
  15.         print a
复制代码

这是一个小python程序, 用来从一给定的文件中输出某一个词的出现次数. sys.argv[1]是文件名, sys.argv[2]是要取的词. 比如 find_word.py testfile "abc"
testfile 如下:
-----------------------------------------------------------
abc abc abcabc abcabcabcabc
aabc abccc abcabccabc abc abc
-----------------------------------------------------------
这个程序出现的问题是虽然能分辨出"abc"词还是"含有abc"的词, 但是读不出最后一个. 还有就是split的时候用的是" "(空格), 如果文件中有tab或是别的什么不可见字串,就会出错. 问题是如何能够读出正确的个数同时又能分辨多种分隔符. 刚学2天, 请勿见笑.
发表于 2004-12-16 00:30:56 | 显示全部楼层

为啥搞得这么复杂

open('/home/coder/abc','r').read().count('abc')
 楼主| 发表于 2004-12-16 01:26:35 | 显示全部楼层
嘿嘿, 你的虽然简单,但是是错的。请看清楚题目。这个程序是能分清“abc“和含有”abc“词的不同的。不过, 短小的python的确很爽。我是刚学,所以还不能做到精炼。
发表于 2004-12-17 15:18:39 | 显示全部楼层
用来从一给定的文件中输出某一个词的出现次数
我的代码不行吗?没搞懂,能分清“abc“和含有”abc“词的不同 有什么意义?
 楼主| 发表于 2004-12-18 00:29:42 | 显示全部楼层
是的,直接count是分不出“abc"或是“abcabc“的。这个程序的意义在于熟悉python的pattern matching 的方法。对于同一个string但是出现在不同的词中,python如何解决?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表