programing

Python csv writer 구분자 잘못?

closeapi 2023. 9. 8. 21:31
반응형

Python csv writer 구분자 잘못?

면책 사항:저는 유럽에 있습니다.

페이지에 따르면 엑셀은 세미콜론을 사용합니다.;유럽에서 십진법 쉼표와 "충돌 방지"를 위한 기본 구분 기호로 사용됩니다.

자, 파이썬 코드가 있습니다.

import csv

data = [["test", "data"], ["foo", "bar"]]
writer = csv.writer(open("data.csv", "wb"), dialect="excel")
writer.writerows(data)

이 파일을 생성해야 하는 대상:

test;data
foo;bar

대신 쉼표를 사용합니다.왜 이런 일이 생기는 건가요?locale.getdefaultlocale()돌아온다('nl_NL', 'cp1252').

csv.excel 방언이 로케일 인식이 아니기 때문입니다.세미콜론을 구분 기호로 명시적으로 사용하려면 csv.open으로 구분 기호를 명시적으로 전달해야 합니다.

writer = csv.writer(open("data.csv", "wb"), delimiter=";")

아니면 새로운 사투리를 만들어서 등록해주세요.

class excel_semicolon(csv.excel):
    delimiter = ';'
register_dialect("excel-semicolon", excel_semicolon)

어느 경우든 부동 소수점 숫자가 어떻게 쓰이는지 검정해야 합니다...원하는 유럽 형식으로 작성되지는 않을 것 같습니다(쉼표를 기수로 사용).

excel방언은 다음 속성에 의해 지정됩니다.Lib/csv.py, 57):

delimiter = ','
quotechar = '"'
doublequote = True
skipinitialspace = False
lineterminator = '\r\n'
quoting = QUOTE_MINIMAL

힌트를 찾을 수가 없네요. 이게 어떤 식으로든 지역에 의존적이라는 걸요. 그래서 당신은 항상,기본 방언을 사용합니다.

하지만 그것은 쉽게 고쳐집니다. 예를 들어.

class excel_semicolon(csv.excel):
    delimiter = ';'

writer = csv.writer(open("data.csv", "wb"), dialect=excel_semicolon)

언급URL : https://stackoverflow.com/questions/7423869/python-csv-writer-wrong-separator

반응형