-
森林海
你可以使用正则表达式做这样的事情:import retxts = ["34291.daveabc2712144.txt", "eidddvabc24156.mp3", "beonabcsimple.csv", "fABCgfdge.txt"]for i in txts: x = re.findall("abc.{5}", i) #if you need to be case insensitive you can do this #x = re.findall("abc.{5}", i, re.IGNORECASE) if x: print(x)
-
慕森王
以下是如何使用该glob模块。假设所有的abc都是小写的:from glob import globfor file in glob('*abc*'): # For every file that has 'abc' in it i = file.find('abc') # Find the index of the 'abc' print(file[i:i+8]) # Print out the file name 5 characters from the end of 'abc', or 8 from the start这样做的好处是:glob('*abc*')这样我们就不会首先列出所有'abc'文件,只列出名称中包含的文件。
-
互换的青春
>>> s = '34291.daveabc2712144.txt'>>> s[(start := s.index('abc')): start + 8] 'abc27121'假设海象运算符'abc'可以找到并且需要 Python 3.8+。在我看来,这样一个简单的任务不需要正则表达式。
-
白衣染霜花
您可以使用正则表达式:abc.{5}在Python:import restrings = ["34291.daveabc2712144.txt", "eidddvabc24156.mp3", "beonabcsimple.csv"]rx = re.compile(r'abc.{5}')names = [m.group(0) for string in strings for m in [rx.search(string)] if m]print(names)请参阅regex101.com 上的演示。