2017-05-01 5 views
1

쉼표 및 큰 따옴표가있는 CSV 파일이 있습니다. 그러나 큰 따옴표는 문자열 안에 쉼표가있는 경우에만 사용됩니다. 이처럼 :CSV 파일의 쉼표 및 큰 따옴표

AAA, BBB, "ACB,BCA", 123, "1,987" 
DDC, CHA, ACH;HDC, "2,34", 192 

나는 따옴표로 쉼표를 구문 분석하지 않고 다음과 같은 출력하고 싶은 : 이중와 값에 대한 쉼표를, 한마디로

x1 x2 x3  x4 x5 
AAA BBB ACB,BCA 123 1,987 
DDC CHA ACH;HDC 2,34 192 

를 무시 따옴표없이 큰 따옴표없이 값을 쉼표로 간주하십시오.

파일 이름을 참조 일부 열을 추가하는 동안 나는, 하나의 CSV 파일에 여러 개의 CSV 파일을 병합하려면이 옵션을 사용하고 있습니다 :

with open(outfile, "wb") as outfile: 
    writer = None 
    for input_filename in filenames: 
     with open(input_filename, "rb") as infile: 
      reader = csv.DictReader(infile, quotechar='"', delimiter=',') 
      if writer is None: 
       field_names = ["index1"] + ["index2"] + reader.fieldnames 
       writer = csv.DictWriter(outfile, field_names) 
       writer.writeheader() 
      for row in reader: 
       row["index1"] = input_filename[1:10] 
       row["index2"] = input_filename[10:20] 
       writer.writerow(row) 

CSV를 읽기 내 특정 솔루션은 다음과 같습니다

csv.DictReader(infile, quotechar='"', delimiter=',') 

하지만 분명히 작동하지 않습니다.

제안 사항?

편집 : 아래 더 나은 예 :

x 1,x 2,x 3,x 4,x5 AAA, “BB,B”, CCC, DDD, EEE AA1, B;B2, CC3, DD4, EE5 

내가 해봤 파서에게 지금까지 csv.DictReader, PD :

내가 열 노력하고있어 csv 파일은 다음과 같이 구성되어있다 .read_csv 또는 csv.reader는 ";" B에서, B2는 다음 열을 모두 지우는 행 차단기입니다.

다음 코드는 "BB, B"문제를 해결하지만, 여전히 B 나누기, 아래의 코드는 여전히 나를 위해 일한과에 휴식하지 않았다

csv.reader(fileObject, quotechar='"', delimiter=',', 
      quoting=csv.QUOTE_ALL, skipinitialspace=True) 
+0

* "분명히 작동하지 않습니다"* :

이 내가받은 출력은? 대신 무엇을합니까? 'DictReader'는 헤더가 필요합니다. 그렇지 않은 경우'{ 'AAA': 'DDC', 'ACB': 'ACH, HDC', '987' ': 없음,'BBB ':'CHA ','BCA ' '', '123': '34 '', '1': '192'} '를 입력하십시오. – jonrsharpe

+0

fieldname은 독자에게는 선택 사항이라고 생각하지만 필자는 대부분의 경우를 오른쪽 열에 배치합니다. x3 컬럼에있는 것들은 제외. "ACB, BCA"를 x3으로 맞추지 만 ACH를 볼 때 행으로 건너 뜁니다 .HDC. – tan

+0

첫 번째 행이 헤더 일 경우 선택 사항이며 예제에서는 표시하지 않았습니다. [편집] [mcve]를 제공하는 것, 예를 들어 출력 행을 인쇄하는 것만으로도 충분할 것입니다. – jonrsharpe

답변

0

새 행에 B2 ';' 기호

csv.DictReader(fileObject, quotechar='"', delimiter=',', 
       quoting=csv.QUOTE_ALL, skipinitialspace=True) 

나를 위해 일했다. 그것은하지 않습니다 -

{'x1': 'AAA', 'x2': 'BBB', 'x4': '123', 'x5': '1,987', 'x3': 'ACB,BCA'} 
{'x1': 'DDC', 'x2': 'CHA', 'x4': '2,34', 'x5': '192', 'x3': 'ACH;HDC'} 
+0

csv.DictReader도 동일한 매개 변수로 작동합니다. 테스트를 거쳤으며 그 과정에서 알게되었습니다 .DictReader() 함수의 유틸리티. :) –

관련 문제