두 개의 .txt 파일을 비교하려고합니다. 첫 번째 파일은 탭으로 구분 된 세 개의 값 (예 : '상품 번호' '응답'및 '코드')이있는 '키'입니다. 두 번째 파일에는 탭으로 구분 된 두 개의 값이 들어 있습니다 ("항목 번호"및 "응답"). 첫 번째 파일을 검색하고 두 번째 파일과 일치하는 "항목 번호/응답"쌍을 찾은 다음 올바른 "코드"를 출력하는 프로그램이 필요합니다. 일치하는 항목이 없으면 출력을 공백 ("")으로 지정합니다. 나는 프로그래머가 아니지만 이것을 알아 내면 직장에서 특정 업무에 소비하는 시간을 크게 줄일 수 있습니다.ValueError : 압축 할 값이 너무 많음 (터플 키가있는 dict 사용 중)
내 코드 설정에 도움이 될 thread이 발견되었습니다. 나는 같은 것을 성취하고 싶다.
f1 = open("Key.txt")
f2 = open("Uncoded.txt")
d = {}
while True:
line = f1.readline()
if not line:
break
c0,c1,c2 = line.split('\t')
d[(c0,c1)] = (c0,c1,c2)
while True:
line = f2.readline()
if not line:
break
c0,c1 = line.split('\t')
if (c0,c1) in d:
vals = d[(c0,c1)]
print (c0, c1, vals[1])
f1.close()
f2.close()
내가 탭 라인을 분리하는 ('\의 t')을 시도 할 경우, 나는 ValueError를 얻을 : 너무 많은 값이 줄을 풀고 아래
file 1, "Key.txt":
1 dog C
2 cat C
3 bird C
4 pig C
5 horse C
1 cat Sem
2 bat TA
3 animal Super
4 panda M
5 pencil U
file2, "Uncoded.txt":
4 pig
3 animal
5 bird
2 bat
2 cat
0
1 fluffy
0 dog
1
desired output:
4 pig C
3 animal Super
5 bird
2 bat TA
2 cat C
0
1 fluffy
0 dog
1
는 내가 가지고있는 코드입니다 "c0, c1, c2 = line.split ('\ t')"
통찰력이나 도움을 많이 주셔서 감사합니다!
(예를 들어 결국) 빈 라인이 발견되지 않을 수 있지만,'split'은 빈 목록을 반환있을 경우 :. 압축 해제 후, 잘 분할 압축을 풀고 목록의 길이를 확인하지 않습니다이 –
당신은 다른 수의 항목을 가진 줄을 가지고 있지만, 당신은 변수의 수와 같지 않은'c0, c1, c2' 변수의 수를 얻었습니다. 오류가 발생했습니다. – Hoopdady
사전 및 튜플 이외의 다른 문제를 해결할 것을 권장합니까? –