如何在python中使用正则表达式获取两个字符之间的字符串?

时间:2011-06-12 23:11:06

标签: python

我将此作为我的输入

content ='abc.zip'\ n

我想从中取出abc。我如何在python中使用正则表达式?

编辑:

不,这不是一个功课问题。我正在尝试自动化某些东西而且我被困在某一点上,这样我就可以使自动化通用到我拥有的任何zip文件。

os.system('python unzip.py -z data/ABC.zip -o data/')

我收到zip文件后,将其解压缩。 我打算通过从zip文件放入的目录中获取文件名,然后将文件名提供给上面提到的语法来解压缩它

3 个答案:

答案 0 :(得分:4)

正如我在评论中暗示的那样,正则表达式不太可能是工作的最佳工具(除非对问题有一些人为的限制,或者它比你的例子复杂得多)。标准字符串和/或路径库提供的功能应该能够满足您的需求。为了更好地说明这些是如何工作的,我将使用content的以下定义:

>>> content = 'abc.def.zip'

如果是一个文件,并且您想要名称和扩展名:

>>> import os.path
>>> filename, extension = os.path.splitext(content)
>>> print filename
abc.def
>>> print extension
.zip

如果是字符串,并且您想删除子字符串'abc':

>>> noabc = content.replace('abc', '')
>>> print noabc
.def.zip

如果你想在每一段时间内分手;

>>> broken = content.split('.')
>>> print broken
['abc', 'def', 'zip']

如果它有多个句点,并且你想在第一个或最后一个句号中打破它:

>>> broken = content.split('.', 1)
>>> print broken
['abc', 'def.zip']
>>> broken = content.rsplit('.', 1)
>>> print broken
['abc.def', 'zip']

答案 1 :(得分:1)

编辑:更改正则表达式以匹配“content ='abc.zip \ n'”而不是字符串“abc.zip”。

import re 

#Matching for "content = 'abc.zip\n'"
matches = re.match("(?P<filename>.*).zip\n'$", "content = 'abc.zip\n'")
matches = matches.groupdict()
print matches

#Matching for "abc.zip"    
matches = re.match("(?P<filename>.*).zip$", "abc.zip")
matches = matches.groupdict()
print matches

输出:

{'filename': 'abc'}

这将打印.zip之前所有内容的匹配项。您可以像常规字典一样访问所有内容。

答案 2 :(得分:0)

如果您试图分解路径的某些部分,您可能会发现os.path模块很有用。它具有很好的抽象,具有易于使用的清晰语义。