簡體   English   中英

如何在 python 中使用正則表達式來獲取兩個字符之間的字符串?

[英]How to use regex in python in getting a string between two characters?

我有這個作為我的輸入

內容 = 'abc.zip'\n

我想從中取出 abc 。 如何在 python 中使用正則表達式?

編輯:

不,這不是作業問題。 我正在嘗試自動化某些東西,但我被困在某個點,以便我可以使自動化對我擁有的任何 zip 文件通用。

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

獲取 zip 文件后,我將其解壓縮。 我打算通過從 zip 文件所在的目錄中獲取文件名來使其通用,然后將文件名提供給上述語法以解壓縮它

正如我在評論中暗示的那樣,正則表達式不太可能是這項工作的最佳工具(除非對問題有一些人為的限制,或者它比您的示例復雜得多)。 標准字符串和/或路徑庫提供的功能應該可以滿足您的需求。 為了更好地說明這些是如何工作的,我將使用以下content定義:

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

如果它是一個文件,並且您想要名稱和擴展名:

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

如果它是一個字符串,並且您想刪除 ZE83AED3DDF4667DEC0DAAAACB2BB3BE0BZ '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']

編輯:更改正則表達式以匹配“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

Output:

{'filename': 'abc'}

這將打印.zip之前所有內容的匹配項。 您可以像普通字典一樣訪問所有內容。

如果您試圖分解路徑的一部分,您可能會發現os.path模塊很有用。 它有很好的抽象和清晰的語義,易於使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM