2017-11-27 3 views
0

에 열 값을 비교하는 방법 : 대괄호없이 대괄호나는이 열 개 값과 같이 비교하는 경향이 어떻게 CSV

name  columnA  columnB 
hahaha  [123]  123 

, 하나. 이드 COLUMNB 하의 값 (123)과 동일 브래킷 (123)의 내용을 확인하고자

먼저 이들 값 읽어

with open('2.csv','rb') as csvfile: 
reader3 = csv.DictReader(csvfile) 
for row in reader3: 
    if row['name']== 'hahaha': 
     b=row['columnA'] 
     c=row['columnB'] 

및 I에 의해 브래킷 컨텐츠 추출하려고하면

e = re.findall(r'\[([^]]*)\]',b) 

나는 c와 e를 인쇄합니다. 출력은 ['123'] [123] 입니다. [123 '] = [123]을 만드는 법을 모르겠습니다. [123]

아이디어가 있으십니까? 감사! 당신은 문자열에서 괄호를 제거하기 위해 찾고 있다면

+0

왜 :. 'B = 로우 ['COLUMNA '] 스트립 ('[] ')'? 그러면'b == c'를 검사 할 수 있습니다. –

+0

당신의 정규식이 틀립니다. 당신은'r '\ [(. *?) \]''와 같은 캡쳐 그룹을 사용해야한다. –

+0

또한're.findall'의 결과가'c'에 할당되어 이전의'c' 값을 덮어 씁니다. 그럴 의도가 있니? –

답변

2

, 당신은 str.strip으로 그렇게 할 수 - 현재의 방법으로

>>> '[1234]'.strip('[]') 
'1234' 

, 정규 표현식은 여기에 범인입니다. 나는 네가 생각하는 것이 확실하지 않지만 분명히 옳지 않다. 한가지 가능한 해결책은 정규식 것 -

>>> re.match(r'\[(.*?)\]', '[1234]').group(1) 
'1234' 
\[  # opening brace 
(.*?) # match-all capture group 
\]  # closing brace 
+0

매우 유용한 답이다! 이제 모든 것이 괜찮다! 고맙다. – Joe

관련 문제