두 개의 csv 파일을 고려한이 프로그램이 있습니다. "testclaims"(1 열 많은 행)를보고 "masterlist"(한 열, 많은 행)의 단어가 "testclaims"행에 있는지 확인합니다. "testclaims"의 행에 "masterlist"의 단어가 포함되어 있으면 "output"이라는 새로운 .csv 파일에 해당 단어가 나열됩니다. 프로그램의이 부분은 훌륭하게 작동합니다.파이썬에서 두 개의 csv 파일 비교
내가 알아낼 수없는 부분은 "masterlist"의 단어를 포함하지 않는 "testclaims"의 나머지 모든 행을 "output2"라고하는 다른 CSV로 출력하는 것입니다. 두 줄의 코드가 작동하도록해야하지만, 내가 원하는 것을 출력하지는 않습니다. 내가 충분히 명확하게 설명했으면 좋겠다. "testclaims"반복 여러 번에 모든 행이 무엇 출력 2 출력됩니다
import csv
with open("testclaims.csv") as file1, open("masterlist.csv") as file2,
open("stopwords.csv") as file3,\
open("output.csv", "wb+") as file4, open("output2.csv", "wb+") as file5:
writer = csv.writer(file4)
writer2 = csv.writer(file5)
key_words = [word.strip() for word in file2.readlines()]
stop_words = [word.strip() for word in file3.readlines()]
internal_stop_words = [' a ', ' an ', ' and ', 'as ', ' at ', ' be ', 'ed ',
'ers ', ' for ',\
' he ', ' if ', ' in ', ' is ', ' it ', ' of ', ' on ', ' to ', 'her ', 'hers '\
' do ', ' did ', ' a ', ' b ', ' c ', ' d ', ' e ', ' f ', ' g ', ' h ', ' i ',\
' j ', ' k ', ' l ', ' m ', 'n ', ' n', ' nc ' ' o ', ' p ', ' q ', ' r ', ' s ',\
' t ', ' u ', ' v ', ' w ', ' x ', ' y ', 'z ', ',', '"', 'ers ', ' th ', ' gc ',\
' so ', ' ot ', ' ft ', ' ow ', ' ir ', ' ho ', ' er ', ]
for row in file1:
row = row.strip()
row = row.lower()
for stop in stop_words:
if stop in row:
row = row.replace(stop," ")
for stopword in internal_stop_words:
if stopword in row:
row = row.replace(stopword," ")
for key in key_words:
if key in row:
writer.writerow([key, row])
elif key not in row:
writer2.writerow([row])
: 여기에 내 코드입니다.
"testclaims는"이 하나 개의 열을 포함하는 경우, 예를 들어:
Happy
Sad
Angry
Dog
Cat
"출력 2"이 하나의 열 출력을 CSV 출력된다
Happy
Happy
Happy
Happy
Happy
Sad
Sad
Sad
Sad
Angry
Angry
Angry
Angry
Angry
Dog
Dog
Dog
Dog
Dog
Cat
Cat
Cat
Cat
Cat
과 동일한 출력을 수행하지 각 행의 번호.
어떻게하면 CSV 파일이 어떻게 보이고 원하는 출력을 얻을 수 있습니까? 최소한의 예가 도움이 될 것입니다. – yoopoo
@yoopoo "testclaims"의 각 행을 여러 번 반복해서 인쇄합니다. 예를 들어, "testclaims"에는 1000 행이 있지만, output2 출력에는 33140 행 – Abtra16
이 있습니다. – yoopoo