이 형식의 각 요소와 함께 src라는 두 개의 목록이 있습니다.
['SOURCE: filename.dc : 1 : a/path/: description','...]
그리고 다음 형식의 각 요소가있는 base라는 하나 :
['BASE: 1: another/path','...]
기본 요소의 번호 (이 경우 4)를 소스 요소의 번호 (이 경우 1)와 비교하려고합니다.
일치하면 소스 요소의 번호를 기본 요소의 경로로 바꾸고 싶습니다.
지금은 다음과 같이 for 루프를 사용하여 소스 요소의 번호를 분할 할 수 있습니다.
for w in source_list:
src_no=(map(lambda s: s.strip(), w.split(':'))[2])
다음과 같이 for 루프를 사용하여 기본 요소의 경로와 번호를 나눌 수 있습니다.
for r in basepaths:
base_no=(map(lambda s: s.strip(), r.split(':'))[1])
base_path=(map(lambda s: s.strip(), r.split(':'))[2])
새 목록이 다음과 같을 것으로 예상합니다 (위의 두 요소 예제를 기반으로 함).
['SOURCE: filename.dc : another/path : a/path/: description','...]
src 목록은 많은 요소가있는 큰 목록이며 기본 목록은 일반적으로 3-4 개의 요소 길이이며 새 목록으로 변환하는 데만 사용됩니다.
나는 당신을 위해 무언가를 해킹했는데, 당신이 원하는 것을해야한다고 생각합니다.
base_list = ['BASE: 1: another/path']
base_dict = dict()
# First map the base numbers to the paths
for entry in base_list:
n, p = map(lambda s: s.strip(), entry.split(':')[1:])
base_dict[n] = p
source_list = ['SOURCE: filename.dc : 1 : a/path/: description']
# Loop over all source entries and replace the number with the base path of the numbers match
for i, entry in enumerate(source_list):
n = entry.split(':')[2].strip()
if n in base_dict:
new_entry = entry.split(':')
new_entry[2] = base_dict[n]
source_list[i] = ':'.join(new_entry)
이것이 해키 솔루션이라는 것을 알고, 번호와 경로를 추출하고 번호를 바꿀 때 regexp ( re 모듈 조사)를 사용해야한다고 생각합니다 .
이 코드는 또한 목록을 반복하는 동안 목록을 변경하는데, 이는 가장 비단뱀적인 일이 아닐 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다