패턴이 다른 파일 이름의 동일한 부분을 추출하는 방법은 무엇입니까?

SteveS

다음 파일 이름 형식이 있습니다.

2020-01-05-ABC1111_001.jpg
2020_02_06_B444444_MN_004.jpg
2020_03_20_KUKU44223222-STAFF_005.jpg
2020-04-03-LULU4444211-MN_018.jpg

대부분 (99 %)의 파일은 다음 형식입니다.

2020_04_03_LULU4444211_018.jpg

그리고 나는 rsplit("_", 2)필요한 것을 사용 하고 얻습니다.

첫 번째 부분은 날짜이고 두 번째 부분은 ID, MN 또는 STAFF, 페이지 번호입니다.

어떻게 든 날짜, ID 및 페이지로 분할하기 위해 좋은 정규식 또는 분할 함수를 빌드하는 방법은 무엇입니까?

위의 모든 예에서 다음을 얻고 싶습니다.

{
"2020-01-05-ABC1111_001.jpg": {"date": 2020-01-05, "id": ABC1111, "page_num": 1},
"2020_02_06_B444444_MN_004.jpg": {"date": 2020_02_06, "id": B444444, "page_num": 4},
"2020_03_20_KUKU44223222-STAFF_005.jpg": {"date": 2020_03_20, "id": KUKU44223222, "page_num": 5},
"2020-04-03-LULU4444211-MN_018.jpg": {"date": 2020-04-03, "id": LULU4444211, "page_num": 18}
}

나는 시도했지만 rsplit주석 옵션 + Spacy NER 모델이 있다는 것을 알고 있지만 더 간단하게 수행하는 다른 방법이 있습니까?

Wiktor Stribiżew

다음과 같은 코드를 사용할 수 있습니다.

import re

strings = ['2020-01-05-ABC1111_001.jpg','2020_02_06_B444444_MN_004.jpg','2020_03_20_KUKU44223222-STAFF_005.jpg','2020-04-03-LULU4444211-MN_018.jpg']
rx = re.compile(r'(?P<date>\d{4}[-_]\d{2}[-_]\d{2})[-_](?P<id>[^_-]+)(?:[_-](?:MN|STAFF))?[_-](?P<page_num>\d+)')

d = {}
for s in strings:
    m = rx.search(s)
    if m:
        d[s] = m.groupdict()

print(d)

참고 항목 파이썬 데모를 산출

{'2020-01-05-ABC1111_001.jpg': {'date': '2020-01-05', 'id': 'ABC1111', 'page_num': '001'}, '2020_02_06_B444444_MN_004.jpg': {'date': '2020_02_06', 'id': 'B444444', 'page_num': '004'}, '2020_03_20_KUKU44223222-STAFF_005.jpg': {'date': '2020_03_20', 'id': 'KUKU44223222', 'page_num': '005'}, '2020-04-03-LULU4444211-MN_018.jpg': {'date': '2020-04-03', 'id': 'LULU4444211', 'page_num': '018'}}

사용 된 정규식에는 이름이 지정된 캡처 링 그룹이 포함되어 있으므로 .groupdict()일치 항목이 발견 된 후 액세스 할 수 있습니다.

(?P<date>\d{4}[-_]\d{2}[-_]\d{2})[-_](?P<id>[^_-]+)(?:[_-](?:MN|STAFF))?[_-](?P<page_num>\d+)

regex 데모를 참조하십시오 .

정규식 세부 정보

  • (?P<date>\d{4}[-_]\d{2}[-_]\d{2})-그룹 "날짜": 4 자리 _또는 -, 2 자리 _또는 -다시 2 자리
  • [-_] -하이픈 또는 밑줄
  • (?P<id>[^_-]+)-그룹 "id": -이외의 문자 1 개 이상_
  • (?:[_-](?:MN|STAFF))?- 선택적인 비 - 포착 기 매칭 -이나 _MN또는STAFF
  • [_-]- -또는_
  • (?P<page_num>\d+) -그룹 "페이지 _ 번호": 1 자리 이상.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이름 목록 파일의 문자열을 다른 파일에 추가하는 방법은 무엇입니까?

분류에서Dev

한 분기에서 다른 분기로 일부 개정을 이동하는 방법은 무엇입니까?

분류에서Dev

인코딩이 다른 (Java) 파일을 동일한 파일로 변환하는 방법은 무엇입니까?

분류에서Dev

한 번에 다른 이름으로 여러 파일의 이름을 바꾸는 방법은 무엇입니까?

분류에서Dev

PostgreSQL에서 동일한 참조로 다른 열의 이름을 지정하는 방법은 무엇입니까?

분류에서Dev

다른 데이터 파일과 비교하여 데이터 파일의 일부 행을 추출하는 방법은 무엇입니까? (병합)

분류에서Dev

다중 발생으로 동일한 패턴 사이에 선을 인쇄하는 방법은 무엇입니까?

분류에서Dev

한 파일의 번호를 다른 파일의 이름과 일치시키는 방법은 무엇입니까?

분류에서Dev

특정 패턴에 대한 디렉토리의 파일 내용을 검색 한 다음 파일 이름을 다른 파일로 반환 (리디렉션)하는 방법은 무엇입니까?

분류에서Dev

파일이 다른 폴더와 일치하는 경우 한 폴더의 모든 파일 이름을 반환하는 방법은 무엇입니까?

분류에서Dev

파일을 덮어 쓰지 않고 대신 Python의 기존 파일에 숫자를 추가하여 다른 txt 파일과 동일한 이름으로 파일을 만드는 방법은 무엇입니까?

분류에서Dev

일부 데이터를 Excel 파일의 다른 셀에 출력하는 방법은 무엇입니까?

분류에서Dev

다른 파일의 함수를 호출하는 Python 파일의 이름을 얻는 방법은 무엇입니까?

분류에서Dev

다른 파일 이름으로 파일 저장을 방지하는 방법은 무엇입니까?

분류에서Dev

비슷한 부분 이름을 가진 파일 이름을 삭제하는 방법은 무엇입니까?

분류에서Dev

jQuery를 사용하여 단일 이미지의 다른 부분을 fadeOut ()하는 방법은 무엇입니까?

분류에서Dev

파이썬을 사용하여 다른 파일 안에있는 여러 파일에서 데이터를 추출하는 방법은 무엇입니까?

분류에서Dev

열 이름으로 값을 필터링 한 다음 동일한 값을 가진 행을 다른 CSV 파일로 추출하는 방법은 무엇입니까? 파이썬 / 팬더

분류에서Dev

다른 용도로 특정 데이터 및 형식을 추출하기 위해 데이터 파일을 구문 분석하는 방법은 무엇입니까?

분류에서Dev

Linux : 새 이름의 파일을 동일한 디렉토리에 복사하는 방법은 무엇입니까?

분류에서Dev

이름에서 특정 패턴과 일치하는 파일을 삭제하는 방법은 무엇입니까?

분류에서Dev

요청에서만 요청 파일의 이름을 추출하는 방법은 무엇입니까?

분류에서Dev

Windows cmd에서 파일 이름을 바꾸는 동안 파일 이름 시작 부분의 문자를 생략하는 방법은 무엇입니까?

분류에서Dev

Windows cmd에서 파일 이름을 바꾸는 동안 파일 이름 시작 부분의 문자를 생략하는 방법은 무엇입니까?

분류에서Dev

Mac OS X에서 파일 이름의 시작 부분을 대체하는 방법은 무엇입니까?

분류에서Dev

배치 파일을 다른 파일로 이동하는 방법은 무엇입니까?

분류에서Dev

이전 줄의 패턴을 포함하는 파일에 패턴이있는 추가 줄을 추가하는 방법은 무엇입니까?

분류에서Dev

수천 개의 파일을 한 번에 이름을 바꾸고 이동하는 방법은 무엇입니까?

분류에서Dev

동일한 객체의 일부이지만 AngularJs에서 DOM의 다른 부분에 배치 된 데이터를 관리하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    이름 목록 파일의 문자열을 다른 파일에 추가하는 방법은 무엇입니까?

  2. 2

    한 분기에서 다른 분기로 일부 개정을 이동하는 방법은 무엇입니까?

  3. 3

    인코딩이 다른 (Java) 파일을 동일한 파일로 변환하는 방법은 무엇입니까?

  4. 4

    한 번에 다른 이름으로 여러 파일의 이름을 바꾸는 방법은 무엇입니까?

  5. 5

    PostgreSQL에서 동일한 참조로 다른 열의 이름을 지정하는 방법은 무엇입니까?

  6. 6

    다른 데이터 파일과 비교하여 데이터 파일의 일부 행을 추출하는 방법은 무엇입니까? (병합)

  7. 7

    다중 발생으로 동일한 패턴 사이에 선을 인쇄하는 방법은 무엇입니까?

  8. 8

    한 파일의 번호를 다른 파일의 이름과 일치시키는 방법은 무엇입니까?

  9. 9

    특정 패턴에 대한 디렉토리의 파일 내용을 검색 한 다음 파일 이름을 다른 파일로 반환 (리디렉션)하는 방법은 무엇입니까?

  10. 10

    파일이 다른 폴더와 일치하는 경우 한 폴더의 모든 파일 이름을 반환하는 방법은 무엇입니까?

  11. 11

    파일을 덮어 쓰지 않고 대신 Python의 기존 파일에 숫자를 추가하여 다른 txt 파일과 동일한 이름으로 파일을 만드는 방법은 무엇입니까?

  12. 12

    일부 데이터를 Excel 파일의 다른 셀에 출력하는 방법은 무엇입니까?

  13. 13

    다른 파일의 함수를 호출하는 Python 파일의 이름을 얻는 방법은 무엇입니까?

  14. 14

    다른 파일 이름으로 파일 저장을 방지하는 방법은 무엇입니까?

  15. 15

    비슷한 부분 이름을 가진 파일 이름을 삭제하는 방법은 무엇입니까?

  16. 16

    jQuery를 사용하여 단일 이미지의 다른 부분을 fadeOut ()하는 방법은 무엇입니까?

  17. 17

    파이썬을 사용하여 다른 파일 안에있는 여러 파일에서 데이터를 추출하는 방법은 무엇입니까?

  18. 18

    열 이름으로 값을 필터링 한 다음 동일한 값을 가진 행을 다른 CSV 파일로 추출하는 방법은 무엇입니까? 파이썬 / 팬더

  19. 19

    다른 용도로 특정 데이터 및 형식을 추출하기 위해 데이터 파일을 구문 분석하는 방법은 무엇입니까?

  20. 20

    Linux : 새 이름의 파일을 동일한 디렉토리에 복사하는 방법은 무엇입니까?

  21. 21

    이름에서 특정 패턴과 일치하는 파일을 삭제하는 방법은 무엇입니까?

  22. 22

    요청에서만 요청 파일의 이름을 추출하는 방법은 무엇입니까?

  23. 23

    Windows cmd에서 파일 이름을 바꾸는 동안 파일 이름 시작 부분의 문자를 생략하는 방법은 무엇입니까?

  24. 24

    Windows cmd에서 파일 이름을 바꾸는 동안 파일 이름 시작 부분의 문자를 생략하는 방법은 무엇입니까?

  25. 25

    Mac OS X에서 파일 이름의 시작 부분을 대체하는 방법은 무엇입니까?

  26. 26

    배치 파일을 다른 파일로 이동하는 방법은 무엇입니까?

  27. 27

    이전 줄의 패턴을 포함하는 파일에 패턴이있는 추가 줄을 추가하는 방법은 무엇입니까?

  28. 28

    수천 개의 파일을 한 번에 이름을 바꾸고 이동하는 방법은 무엇입니까?

  29. 29

    동일한 객체의 일부이지만 AngularJs에서 DOM의 다른 부분에 배치 된 데이터를 관리하는 방법은 무엇입니까?

뜨겁다태그

보관