`endsWith`에 상응하는 Matlab : 확장자와 관련된 파일 이름 목록을 필터링하는 방법은 무엇입니까?

얀 에글 링거

endswithPython, Java 등에서 사용할 수 있는 함수 와 동등한 MATLAB이 있습니까?

예를 들어 목록과 같은 결말로 문자열 목록을 필터링하고 싶습니다.

a.tif
b.jpg
c.doc
d.txt
e.tif

다음과 같은 결과를 얻으려면 endswith ( '. tif')로 필터링해야합니다.

a.tif
e.tif

Python에서 수행하는 방법은 다음과 같습니다.

textList = ['a.tif','b.jpg','c.doc','d.txt','e.tif'];
filteredList = filter(lambda x:x.endswith('.tif'), textList)

이것이 내가 MATLAB에서 시도한 것입니다.

textList = {'a.tif'; 'b.jpg'; 'c.doc'; 'd.txt'; 'e.tif'};
found = strfind(textList, '.tif');
a = zeros(size(found)); for k = 1:size(found), a(k)=~isempty(found{k}); end;
textList(logical(a))

나는 교체해야 할 수도 있습니다 strfind에 의해 regexp문자열의 끝에서 찾기 회 발생한다. 일반적으로 이것은 목표를 달성하는 다소 복잡한 방법이라고 생각합니다. MATLAB에서 목록을 더 쉽게 필터링 할 수있는 방법이 있습니까?

더 웨이

정규식을 사용하는 것이 아마도 매우 효율적일 것입니다.

filelist = {'a.tif'
            'c.doc'
            'd.txt'
            'e.tif'}

filtered = regexp( filelist ,'(\w*.txt$)|(\w*.doc$)','match')
filtered = [filtered{:}]

설명:

(\w*.txt$)모든 파일 이름 반환 \w*종료 $.txt(\w*.doc$)모든 파일 이름을 반환합니다 \w*종료 $로를 .doc. |단지 논리 연산자이다.

특히 하나의 파일 확장자 만 필터링하려는 경우 매우 편리합니다.

fileExt = 'tif';
filtered = regexp( filelist ,['\w*.' fileExt '$'],'match')
filtered = [filtered{:}]

여러 파일 확장자를 필터링 할 수도 있지만 더 긴 정규식 을 만들어야합니다 .

fileExt = {'doc','txt'};
dupe = @(x) repmat({x},1,numel(fileExt))
filter = [dupe('(\w*.'); fileExt(:).'; dupe('$)'); dupe('|')] %'

filtered = regexp( filelist, [filter{1:end-1}], 'match')
filtered = [filtered{:}]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관