\n
의 일부로 인해 형식이 잘못된 .csv
파일이 있습니다. 예컨대는 :여분을 제거하는 루비 정규식
Name,Comment
"Peter","Good morning"
"Paul","How are you
"
"Mary","Fine"
제 2 행은 원치 않는 여분의 \n
로 끝납니다.
꼬리표 \n
다음에 큰 따옴표가 표시되지 않습니다. "
(전체 파일을 이미 문자열로 읽었다 고 가정)?
\n
의 일부로 인해 형식이 잘못된 .csv
파일이 있습니다. 예컨대는 :여분을 제거하는 루비 정규식
Name,Comment
"Peter","Good morning"
"Paul","How are you
"
"Mary","Fine"
제 2 행은 원치 않는 여분의 \n
로 끝납니다.
꼬리표 \n
다음에 큰 따옴표가 표시되지 않습니다. "
(전체 파일을 이미 문자열로 읽었다 고 가정)?
문자열 전체를 읽지 말고 표준 CSV parser in 1.9을 사용하여 읽으십시오.
require 'csv'
data = CSV.open('pancakes.csv').map { |r| r.map(&:strip) }
# or
data = CSV.open('pancakes.csv').map { |r| r.map(&:chomp) }
는 그런 다음
data
이있을 것이다 : 당신이 다음
pancakes.csv
, 말,에있는 것을있는 경우
[
["Name", "Comment"],
["Peter", "Good morning"],
["Paul", "How are you"],
["Mary", "Fine"]
]
그래서 당신은 당신의 데이터가 모두 깨끗하고 잘 아주 간단하게 해석 얻을 수 있습니다. 그리고 만약 당신이 CSV를 정리해서 개조 된 개행 문자를 처리 할 수없는 다른 프로그램을 만들 필요가 있다면, CSV를 사용하여 그것을 다시 쓸 수 있습니다.
큰 따옴표로 끝나지 않는 행에 후행 큰 따옴표를 추가하고 빈 줄 (큰 따옴표 만있는 행)을 제거하지 않는 이유는 무엇입니까?
Regexp가 필요하지 않습니다. 그것은 기본적으로 그 자체의 모든 이중 따옴표입니다 :
csv_string.gsub("\n\"\n", "\"\n")
Downvoted? Harsh :) – d11wtq
어떤 이유로 나는 1.8.7에 머무르고'fastercsv'를 사용해야합니다. 'fastercsv'와 비슷한가요? 감사! – ohho
@ohho : AFAIK 1.9의'csv'는 유니 코드 패치가있는'fastercsv'에 불과하므로 1.8에서'fastercsv'와 똑같이 작동해야합니다. –
그것은'FasterCSV.foreach'와 같은 오류를줍니다. 즉,'FasterCSV :: MalformedCSVError (FasterCSV :: MalformedCSVError)' – ohho