2017-12-10 2 views
0

에서 가져 오기 목록의 마지막 편지를 자르는 것은이 내 코드입니다 각 개별 요소의 문자를 잘라?CSV 파일

목록의 형식으로 가져 오기 CSV 파일에서 팁과 몇 가지 다른 차이가있는 특정 요소의 마지막 문자를 바꾸고 CSV 파일에 다시 저장하고 싶습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?

답변

0

reader은 각 반복마다 줄에있는 모든 항목의 목록을 제공하는 반복기입니다. 이 반복자 활용 유용한 해결책 :

import csv 

def remove_cruft(s): 
    return s[:-1] 

with open('name.csv', 'r') as f: 
    reader = csv.reader(f) 
    my_list = [[remove_cruft(item) for item in line] for line in reader] 

print(my_list) 

출력 :

[['robi'], ['marudzi'], ['biega']] 

콘텐츠에 기초 :

name.csv
robić 
marudzić 
biegać 

.

0

실제 문자열이 아닌 목록을 전달하기 때문에 이러한 현상이 발생합니다.

>>> s = [['robić'], ['marudzić'], ['biegać']] 
>>> s[0] 
['robić'] 

>>> s[0][:-1] 
[] 

>>> s[0][0] 
'robić' 

>>> s[0][0][:-1] 
'robi' 

이는 데이터가 2D 목록으로 구성되기 때문입니다. 다음과 같이 데이터를 구조화 한 경우 :

>>> s = ['robić', 'marudzić', 'biegać'] 
>>> [remove_cruft(a) for a in s] 
['robi', 'marudzi', 'biega'] 

이렇게하면됩니다.

0

이 코드는이 문제를 해결합니다.

import csv 

with open('name.csv', 'r') as f: 
    reader = csv.reader(f) 
    my_list = list(reader) 

print(my_list) 

def remove_cruft(s): 
    return s[:-1] 


new_list=[remove_cruft(s) for s in my_list[0]] 
print(new_list) 

출력 : - 사실

[['robić', 'marudzić', 'biegać']] 
['robi', 'marudzi', 'biega'] 

, 코드가 생성하는 출력은 다음과 같습니다 -

[['robić', 'marudzić', 'biegać']] 
[['robić', 'marudzić']] 

당신을 my_list를 통과하여 수행 할 수있는) (remove_cruft하는 문자열을 통과해야합니다 [0]