我将此作为我的输入
content ='abc.zip'\ n
我想从中取出abc。我如何在python中使用正则表达式?
编辑:
不,这不是一个功课问题。我正在尝试自动化某些东西而且我被困在某一点上,这样我就可以使自动化通用到我拥有的任何zip文件。
os.system('python unzip.py -z data/ABC.zip -o data/')
我收到zip文件后,将其解压缩。 我打算通过从zip文件放入的目录中获取文件名,然后将文件名提供给上面提到的语法来解压缩它
答案 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模块很有用。它具有很好的抽象,具有易于使用的清晰语义。