배열에 대한 Python csv 문자열
csv 인코딩된 문자열을 해석하여 어레이 또는 사전으로 변환하는 간단한 라이브러리 또는 함수를 알고 계신 분 계십니까?
지금까지 살펴본 모든 예에서 는 문자열이 아닌 파일 경로를 사용하기 때문에 내장 CSV 모듈을 원하지 않습니다.
를 사용하여 문자열을 파일 객체로 변환한 후csv
모듈:
from io import StringIO
import csv
scsv = """text,with,Polish,non-Latin,letters
1,2,3,4,5,6
a,b,c,d,e,f
gęś,zółty,wąż,idzie,wąską,dróżką,
"""
f = StringIO(scsv)
reader = csv.reader(f, delimiter=',')
for row in reader:
print('\t'.join(row))
보다 간단한 버전split()
줄바꿈:
reader = csv.reader(scsv.split('\n'), delimiter=',')
for row in reader:
print('\t'.join(row))
아니면 간단하게split()
이 문자열을 행으로 변환합니다.\n
세퍼레이터로 하고 나서split()
각 행에 값을 매기지만, 이 방법에서는 견적을 유의해야 합니다.csv
모듈이 우선됩니다.
Python 2에서는 Import해야 합니다.StringIO
~하듯이
from StringIO import StringIO
대신.
심플 - csv 모듈은 목록에도 대응합니다.
>>> a=["1,2,3","4,5,6"] # or a = "1,2,3\n4,5,6".split('\n')
>>> import csv
>>> x = csv.reader(a)
>>> list(x)
[['1', '2', '3'], ['4', '5', '6']]
공식 문서csv.reader()
https://docs.python.org/2/library/csv.html은 매우 도움이 됩니다.
파일 개체와 목록 개체가 모두 적합합니다.
import csv
text = """1,2,3
a,b,c
d,e,f"""
lines = text.splitlines()
reader = csv.reader(lines, delimiter=',')
for row in reader:
print('\t'.join(row))
또한 모듈이 직접 구문 분석을 지원하지 않지만 다음과 같은 작업을 쉽게 수행할 수 있습니다.
import csv
for row in csv.reader(['one,two,three']):
print row
문자열을 단일 요소 목록으로 변환하기만 하면 됩니다.
문자열 Import이 예가 문서에 명시되어 있는 경우 IO는 다소 과도한 것 같습니다.
다른 사람들이 이미 지적했듯이 Python에는 CSV 파일을 읽고 쓰는 모듈이 포함되어 있습니다.입력 문자가 ASCII 제한 범위 내에 있으면 매우 잘 작동합니다.다른 인코딩을 처리하려면 더 많은 작업이 필요합니다.
csv 모듈용 Python 문서에서는 csv.reader의 확장을 구현하고 있습니다.이 확장자는 같은 인터페이스를 사용하지만 다른 인코딩을 처리하고 유니코드 문자열을 반환합니다.설명서에서 코드를 복사하여 붙여넣기만 하면 됩니다.그 후 다음과 같이 CSV 파일을 처리할 수 있습니다.
with open("some.csv", "rb") as csvFile:
for row in UnicodeReader(csvFile, encoding="iso-8859-15"):
print row
범용 CSV 파서는 아니지만 쉼표가 있는 단순한 문자열에 사용할 수 있습니다.
>>> a = "1,2"
>>> a
'1,2'
>>> b = a.split(",")
>>> b
['1', '2']
CSV 파일을 해석하려면:
f = open(file.csv, "r")
lines = f.read().split("\n") # "\r\n" if needed
for line in lines:
if line != "": # add other needed checks to skip titles
cols = line.split(",")
print cols
https://docs.python.org/2/library/csv.html?highlight=csv#csv.reader
csvfile은 반복자 프로토콜을 지원하고 next() 메서드가 호출될 때마다 문자열을 반환하는 임의의 객체입니다.
따라서,StringIO.StringIO()
,str.splitlines()
발전기도 좋고요.
이를 통해 CSV를 목록에 로드합니다.
import csv
csvfile = open(myfile, 'r')
reader = csv.reader(csvfile, delimiter='\t')
my_list = list(reader)
print my_list
>>>[['1st_line', '0'],
['2nd_line', '0']]
대체 솔루션은 다음과 같습니다.
>>> import pyexcel as pe
>>> text="""1,2,3
... a,b,c
... d,e,f"""
>>> s = pe.load_from_memory('csv', text)
>>> s
Sheet Name: csv
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| a | b | c |
+---+---+---+
| d | e | f |
+---+---+---+
>>> s.to_array()
[[u'1', u'2', u'3'], [u'a', u'b', u'c'], [u'd', u'e', u'f']]
여기 서류가 있습니다.
언급URL : https://stackoverflow.com/questions/3305926/python-csv-string-to-array
'sourcecode' 카테고리의 다른 글
Maven이 모든 테스트를 실행하도록 하는 것, 심지어 일부 실패 시에도 (0) | 2022.09.17 |
---|---|
자동 열은 하나만 있을 수 있습니다. (0) | 2022.09.17 |
Eclipse WTP vs sydeo, "출판 없이 모듈 제공" (0) | 2022.09.16 |
MariaDB Bitwise AND(&) 연산 (0) | 2022.09.16 |
테이블에서 가장 큰 ID를 가진 전체 행을 선택하려면 어떻게 해야 합니까? (0) | 2022.09.16 |