Python论坛  - 讨论区

标题:[python-chinese] 请大虾指点一下拉!

2005年09月27日 星期二 23:01

Ghost Fox ghostfox2008 at gmail.com
Tue Sep 27 23:01:19 HKT 2005

问个问题啊!各位大侠,今天在这练习这个正则的时候,便试着做个搜索文件的程序!但是有点问题一直弄不过去

def find_file(filename,dirname,names):
p=re.compile(filename)
for i in range(len(names)):
if p.search(names[i]):
print os.path.join(dirname,names[i])

这个函数可以执行一部分功能,但是如果输入"*.txt"或者其他以特殊字符开头的就会出错!各位大虾能不能够指点一下,或者可以有其他的方法!


谢谢,小弟初学python!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050927/0b1d05fb/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月27日 星期二 23:14

panhudie nirvana117 at gmail.com
Tue Sep 27 23:14:50 HKT 2005

不能直接用' *.txt ' ,这个不是正则表达, 在正则里 * 号只是表示 没有 或者 很多, 具体的你得查一下手册.
 如果要用你说的这种' *.txt ' 表示目录中的txt文件, 可以用glob, 具体用法在手册,比如这样:

>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']



 On 9/27/05, Ghost Fox <ghostfox2008 at gmail.com> wrote:
>
>
> def find_file(filename,dirname,names):
> p=re.compile(filename)
> for i in range(len(names)):
> if p.search(names[i]):
> print os.path.join(dirname,names[i])
>
> 这个函数可以执行一部分功能,但是如果输入"*.txt"或者其他以特殊字符开头的就会出错!各位大虾能不能够指点一下,或者可以有其他的方法!
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050927/60c3e1f6/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月28日 星期三 11:03

makeyunbad makeyunbad at gmail.com
Wed Sep 28 11:03:09 HKT 2005

在 05-9-27,Ghost Fox<ghostfox2008 at gmail.com> 写道:
> 问个问题啊!各位大侠,今天在这练习这个正则的时候,便试着做个搜索文件的程序!但是有点问题一直弄不过去
>
> def find_file(filename,dirname,names):
>     p=re.compile(filename)
>     for i in range(len(names)):
>         if p.search(names[i]):
>             print os.path.join(dirname,names[i])
>
> 这个函数可以执行一部分功能,但是如果输入"*.txt"或者其他以特殊字符开头的就会出错!各位大虾能不能够指点一下,或者可以有其他的方法!

*.txt是不是应该这样啊\w.txt
>>> p = re.compile('\w.txt')
>>> if p.search('ok.txt'):
	print 'ok'
else:
	print 'not ok'

	
ok

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月28日 星期三 11:08

limodou limodou at gmail.com
Wed Sep 28 11:08:38 HKT 2005

> *.txt是不是应该这样啊\w.txt
> >>> p = re.compile('\w.txt')
> >>> if p.search('ok.txt'):
>         print 'ok'
> else:
>         print 'not ok'

最好是 \w+ 因为\w只配置一个字符。

--
I like python!
My Donews Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月28日 星期三 11:51

cheng meng cmsir1986 at gmail.com
Wed Sep 28 11:51:31 HKT 2005

好像标准库里的glob模块可以做类似的事情?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年09月28日 星期三 17:39

Ghost Fox ghostfox2008 at gmail.com
Wed Sep 28 17:39:17 HKT 2005

>好像标准库里的glob模块可以做类似的事情?


好象是这样的,不过我并不是要做具体的开发,只是练习!

我知道*.txt不是正则表达式,我说的*.txt是说用户想查找所有的txt文件那种意思!可以办到吗?还是用if判断用户的输入来控制!比如用户输了"*.txt"那么我就写"\w+.txt"


Love Python!
python-chinese at lists.python.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050928/092f3e59/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号