2014-02-14 2 views
1

CSV 파일에서 문자열을 가져와야합니다. 파이썬을 사용할 수는 있지만 시간을 찾고 있지만 여전히 얻을 수는 없습니다.마지막 열에서 파이썬을 사용하여 문자열 가져 오기

DATE|CUST|PHONE|EMAIL|NAME|CLASS|QTY|AMOUNT|ID|TRX_ID|BOOKING CODE|PIN 

01-02-2013 09:04:16|sdasd|43543|csdfd|Voucher Regular|REGULAR|1|2250000|G001T001|0062013000149|32143000341|MV1011302JSGUCFOM 

01-02-2013 09:04:16|sdasd|43543|csdfd|Voucher Regular|REGULAR|2|1200000|G001T001|0062013000149|32143000341|MV4011302CBWDQYOU&MV4011302PVSEVAPJ 

01-02-2013 11:01:13|ge|||Voucher Regular|REGULAR|1|600000|G001T001|20000027000005|32143000355|MV4011302UHKMJEEM 

내가 얻고 싶은 캐릭터는 PIN 열 (마지막 하나)이며, 다음은 CSV는처럼 보이는 각 열에는 '&'으로 구분 된 여러 개의 PIN이있을 수 있습니다.

도움을 주셔서 감사합니다. 몇 시간 동안이 문제를 해결했습니다.

+0

이유는 무엇입니까? 유닉스'awk'는 당신을 위해 그것을 할 것입니다 .. – scarecrow

답변

1

을 얻을 수

'hello|world|and|noel'.split('|')[-1] 

을 CSV 파일을 다룰 때 csv module :

을 사용하세요.
import csv 
from itertools import chain 

with open('path/to/your/file.csv', 'rb') as csvfile: 
    tmp = (r['PIN'].split('&') for r in csv.DictReader(csvfile, delimiter='|')) 
    pins = list(chain.from_iterable(tmp)) 

for pin in pins: 
    print pin 
+0

안녕하세요, 도미니크 감사합니다. 그러나 '&'와 연결하는 문자열에 대해서는 여전히 1 행처럼 : MV4011302CBWDQYOU & MV4011302PVSEVAPJ. 어떻게하면 그 줄을 별도의 줄로 만들 수 있습니까? 덕분에 – user3231429

+0

각 행에'.split ('&')'를 호출 할 수 있습니다. 내 대답을 업데이트했습니다. – sloth

+0

예 .. 그게 .. 너! 고마워! – user3231429

3

스플릿 온 | 마지막 항목을 얻을 :

pin = line.split('|')[-1] 

이상 공상 :

import csv 

with open('bookings.csv', 'rb') as csvfile: 
    bookings = csv.reader(csvfile, delimiter='|') 
    for values in bookings: 
     print(values[-1]) 
0

각 행을 반복 처리와 같은 것을 사용 : 마지막 요소

관련 문제