목록에 Python 가져오기 CSV
약 2000개의 레코드가 있는 CSV 파일을 가지고 있습니다.
각 레코드에는 문자열과 카테고리가 있습니다.
This is the first line,Line1
This is the second line,Line2
This is the third line,Line3
이 파일을 다음과 같은 목록으로 읽어야 합니다.
data = [('This is the first line', 'Line1'),
('This is the second line', 'Line2'),
('This is the third line', 'Line3')]
Python을 사용하여 이 CSV를 필요한 목록으로 가져오려면 어떻게 해야 합니까?
csv 모듈 사용:
import csv
with open('file.csv', newline='') as f:
reader = csv.reader(f)
data = list(reader)
print(data)
출력:
[['This is the first line', 'Line1'], ['This is the second line', 'Line2'], ['This is the third line', 'Line3']]
튜플이 필요한 경우:
import csv
with open('file.csv', newline='') as f:
reader = csv.reader(f)
data = [tuple(row) for row in reader]
print(data)
출력:
[('This is the first line', 'Line1'), ('This is the second line', 'Line2'), ('This is the third line', 'Line3')]
이전 Python 2 응답도 모듈을 사용하여:
import csv
with open('file.csv', 'rb') as f:
reader = csv.reader(f)
your_list = list(reader)
print your_list
# [['This is the first line', 'Line1'],
# ['This is the second line', 'Line2'],
# ['This is the third line', 'Line3']]
Python 3용으로 업데이트됨:
import csv
with open('file.csv', newline='') as f:
reader = csv.reader(f)
your_list = list(reader)
print(your_list)
출력:
[['This is the first line', 'Line1'], ['This is the second line', 'Line2'], ['This is the third line', 'Line3']]
판다들은 데이터를 다루는 데 꽤 능숙하다.다음으로 사용 예를 제시하겠습니다.
import pandas as pd
# Read the CSV into a pandas data frame (df)
# With a df you can do many things
# most important: visualize data with Seaborn
df = pd.read_csv('filename.csv', delimiter=',')
# Or export it in many ways, e.g. a list of tuples
tuples = [tuple(x) for x in df.values]
# or export it as a list of dicts
dicts = df.to_dict().values()
한 가지 큰 장점은 판다들이 자동으로 머리글 열을 처리한다는 것이다.
Seaborn에 대해 들어본 적이 없다면 한 번 보는 것을 추천합니다.
다음 항목도 참조하십시오.Python으로 CSV 파일을 읽고 쓰는 방법은 무엇입니까?
팬더 #2
import pandas as pd
# Get data - reading the CSV file
import mpu.pd
df = mpu.pd.example_df()
# Convert
dicts = df.to_dict('records')
df의 내용은 다음과 같습니다.
country population population_time EUR
0 Germany 82521653.0 2016-12-01 True
1 France 66991000.0 2017-01-01 True
2 Indonesia 255461700.0 2017-01-01 False
3 Ireland 4761865.0 NaT True
4 Spain 46549045.0 2017-06-01 True
5 Vatican NaN NaT True
받아쓰기의 내용은
[{'country': 'Germany', 'population': 82521653.0, 'population_time': Timestamp('2016-12-01 00:00:00'), 'EUR': True},
{'country': 'France', 'population': 66991000.0, 'population_time': Timestamp('2017-01-01 00:00:00'), 'EUR': True},
{'country': 'Indonesia', 'population': 255461700.0, 'population_time': Timestamp('2017-01-01 00:00:00'), 'EUR': False},
{'country': 'Ireland', 'population': 4761865.0, 'population_time': NaT, 'EUR': True},
{'country': 'Spain', 'population': 46549045.0, 'population_time': Timestamp('2017-06-01 00:00:00'), 'EUR': True},
{'country': 'Vatican', 'population': nan, 'population_time': NaT, 'EUR': True}]
팬더 #3
import pandas as pd
# Get data - reading the CSV file
import mpu.pd
df = mpu.pd.example_df()
# Convert
lists = [[row[col] for col in df.columns] for row in df.to_dict('records')]
의 내용lists
다음과 같습니다.
[['Germany', 82521653.0, Timestamp('2016-12-01 00:00:00'), True],
['France', 66991000.0, Timestamp('2017-01-01 00:00:00'), True],
['Indonesia', 255461700.0, Timestamp('2017-01-01 00:00:00'), False],
['Ireland', 4761865.0, NaT, True],
['Spain', 46549045.0, Timestamp('2017-06-01 00:00:00'), True],
['Vatican', nan, NaT, True]]
Python3 업데이트:
import csv
from pprint import pprint
with open('text.csv', newline='') as file:
reader = csv.reader(file)
res = list(map(tuple, reader))
pprint(res)
출력:
[('This is the first line', ' Line1'),
('This is the second line', ' Line2'),
('This is the third line', ' Line3')]
csvfile이 파일개체일 경우 다음과 같이 열어야 합니다.newline=''
.
csv 모듈
입력에 쉼표가 없는 것이 확실하다면 카테고리를 구분하는 것 외에 파일을 한 줄씩 읽고 분할할 수 있습니다.,
, 그 후 결과를 에 푸시합니다.List
즉, CSV 파일을 참조하고 있는 것처럼 보이므로 모듈 사용을 검토해 주십시오.
result = []
for line in text.splitlines():
result.append(tuple(line.split(",")))
를 사용할 수 있습니다.list()
csv 리더 개체를 목록으로 변환하는 함수
import csv
with open('input.csv', newline='') as csv_file:
reader = csv.reader(csv_file, delimiter=',')
rows = list(reader)
print(rows)
단순한 루프만으로 충분합니다.
lines = []
with open('test.txt', 'r') as f:
for line in f.readlines():
l,name = line.strip().split(',')
lines.append((l,name))
print lines
이미 댓글에 기재되어 있는 바와 같이csv
library in python. csv는 쉼표로 구분된 값을 의미하며, 이는 정확히 사용자의 경우와 같습니다.라벨과 값은 쉼표로 구분됩니다.
범주 및 값 유형이기 때문에 튜플 목록 대신 사전 유형을 사용하는 것이 좋습니다.
어쨌든 아래 코드에서는 두 가지 방법을 모두 보여 줍니다.d
사전과l
는 튜플 목록입니다.
import csv
file_name = "test.txt"
try:
csvfile = open(file_name, 'rt')
except:
print("File not found")
csvReader = csv.reader(csvfile, delimiter=",")
d = dict()
l = list()
for row in csvReader:
d[row[1]] = row[0]
l.append((row[0], row[1]))
print(d)
print(l)
유감스럽게도 나는 기존의 답변 중 특별히 만족스러운 것은 없다고 생각한다.
다음은 csv 모듈을 사용한 간단하고 완벽한 Python 3 솔루션입니다.
import csv
with open('../resources/temp_in.csv', newline='') as f:
reader = csv.reader(f, skipinitialspace=True)
rows = list(reader)
print(rows)
주의:skipinitialspace=True
논쟁.안타깝게도 OP의 CSV에는 각 쉼표 뒤에 공백이 포함되어 있기 때문에 이 작업이 필요합니다.
출력:
[['This is the first line', 'Line1'], ['This is the second line', 'Line2'], ['This is the third line', 'Line3']]
요건을 조금 확장하여 행의 순서를 신경 쓰지 않고 카테고리별로 분류하는 경우 다음 솔루션이 도움이 될 수 있습니다.
>>> fname = "lines.txt"
>>> from collections import defaultdict
>>> dct = defaultdict(list)
>>> with open(fname) as f:
... for line in f:
... text, cat = line.rstrip("\n").split(",", 1)
... dct[cat].append(text)
...
>>> dct
defaultdict(<type 'list'>, {' CatA': ['This is the first line', 'This is the another line'], ' CatC': ['This is the third line'], ' CatB': ['This is the second line', 'This is the last line']})
이렇게 하면 사전에서 범주가 되는 키로 사용할 수 있는 모든 관련 행을 얻을 수 있습니다.
다음은 Python 3.x에서 CSV를 다차원 배열로 가져오는 가장 쉬운 방법입니다. CSV는 아무 것도 가져오지 않고 4줄의 코드만 가져옵니다.
#pull a CSV into a multidimensional array in 4 lines!
L=[] #Create an empty list for the main array
for line in open('log.txt'): #Open the file and read all the lines
x=line.rstrip() #Strip the \n from each line
L.append(x.split(',')) #Split each line into a list and add it to the
#Multidimensional array
print(L)
다음은 csv 모듈을 사용하지만 csv 테이블의 헤더인 첫 번째 줄을 사용하여 file.csv 내용을 딕트 목록에 추출하는 코드입니다.
import csv
def csv2dicts(filename):
with open(filename, 'rb') as f:
reader = csv.reader(f)
lines = list(reader)
if len(lines) < 2: return None
names = lines[0]
if len(names) < 1: return None
dicts = []
for values in lines[1:]:
if len(values) != len(names): return None
d = {}
for i,_ in enumerate(names):
d[names[i]] = values[i]
dicts.append(d)
return dicts
return None
if __name__ == '__main__':
your_list = csv2dicts('file.csv')
print your_list
언급URL : https://stackoverflow.com/questions/24662571/python-import-csv-to-list
'source' 카테고리의 다른 글
(i<=j&j<=i&i!=j)가 TRUE로 평가되는 이유는 무엇입니까? (0) | 2022.12.28 |
---|---|
Vue2 JS를 사용하는 이 기본 계산 데이터 값은 어떤 문제가 있습니까? (0) | 2022.12.28 |
선택된 데이터베이스를 확인하는 방법 (0) | 2022.12.28 |
PHP 테스트 응용 프로그램의 Kubernetes 배포 (0) | 2022.12.28 |
Ajax를 Django 애플리케이션과 통합하려면 어떻게 해야 합니까? (0) | 2022.12.28 |