2011-09-09 5 views
0

나는 아무것도 처리하지 않고 계속 진행하는 몇 가지 영역이있는 CSV 파일을 가지고 있습니다. 캐치는, 나는 또한 파일에서 다른 항목을 가지고 있습니다./나는 그것을 제거하고 싶지 않습니다.단일 파일/CSV 파일에서 제외

예 :

/abc, /, akaksdhfaiwe 
/, /foo, /bar 

내가 싶습니다 : 나는이 작업을 수행하려면 어떻게

/abc,, akaksdhfaiwe 
, /foo, /bar 

?/abc/foo/bar를 제거하기 때문에 gsub ('^ /', '')를 사용할 수 없습니다. 그리고 내 삶을 위해서, 나는 '끝'을 찾을 수없는 것 같습니다. 그 \ Z 작동하지 운, 희망했다.

수취인?

나는 많은 조작을 위해 더 빠른 CSV를 사용 해왔다. 루비와

+0

시도'나오지도의 @/@, @ g'' – yhager

+0

오, 당신은 루비를 유지하려면 ... (편집 할 수 없습니다 어떤 이유로 위의 의견) – yhager

답변

0

을 파일 당신이 그것을 청소하는 동안 메모리를 후루룩 소리 내며 먹기하고 다시 그것을 쓸 수 그 큰없는 경우 :

clean = [ ] 
CSV.open(your_csv).each { |r| csv << r.map { |e| e.sub(/^\s*\/$/, '') } } 
out = CSV.open(your_csv, 'wb') 
clean.each { |r| out << r } 
out.close 

어쨌든 한꺼번에 많은 양의 CSV 파일을 메모리에 저장할 수없는 경우 :

out = CSV.open('tempfile.csv', 'wb') 
CSV.open(your_csv).each { |r| out << r.map { |e| e.sub(/^\s*\/$/, '') } } 
out.close 
File.rename('tempfile.csv', your_csv) 

이 설정 신분증 :

/abc, /, akaksdhfaiwe 
/, /foo, /bar 

/abc,"", akaksdhfaiwe 
"", /foo, /bar 
+0

그것은 거대한 파일입니다. 내 말은, 많이. 따라서 기억을 읽는 것은 아무 것도 아닙니다. 하지만 두 번째 것. 나는 그것을 줄 것이다. Mu 감사합니다. – MarkL

0

당신은 할 수 있습니다 :

"/asdf /, /fdsa".gsub("/,", ",") 
관련 문제