Comments (7)
To answer my last question, a quick workaround is to nilify all empty strings in the array given to generate_line
ala values.map{|v| v.blank? ? nil : v}
(using the blank?
core extension, of course)
from csv.
Why is ""|""
your problem? Can you show a problem case?
from csv.
It's just unusual to see quoted values in PSV. Especially when unnecessary (as in the case with an empty string).
In the following examples, both the nil value and string-with-a-space generate expected PSV – no quotes in either. But the example that includes an empty string generates PSV with unnecessary quotes:
> puts CSV.generate_line(["There is a nil",nil,"column in this"], col_sep: '|')
There is a nil||column in this
> puts CSV.generate_line(["There is a space-only"," ","column in this"], col_sep: '|')
There is a space-only| |column in this
> puts CSV.generate_line(["There is an empty","","column in this"], col_sep: '|')
There is an empty|""|column in this
Why does the final example put quotes in the text? I assert that many systems use PSV for data exchange would be surprised to find quotes in the PSV unless the quotes should be part of the value. So, in the final (and what I consider surprising) example, many people would treat the quoted value as the literal value ""
.
from csv.
If a quote_empty_strings: true
option were introduced (defaulting to true for backwards compatibility), I'd be satisfied.
from csv.
This is the expected behavior. Not returning ""
would cause the field to be parsed as nil.
# with quotes
CSV.parse('There is an empty|""|column in this', col_sep: '|')
# => [["There is an empty", "", "column in this"]]
# without quotes
CSV.parse('There is an empty||column in this', col_sep: '|')
#=> [["There is an empty", nil, "column in this"]]
from csv.
Ah, do you want to use the csv library to parse the PSV spec https://github.com/jgis/psv-spec data?
I didn't know PSV.
If you want to use the csv library to parse the PSV spec data, we need to add backslash escape feature instead of add nil
and empty string data customize feature: https://github.com/jgis/psv-spec#6-some-characters-are-escaped-by-a-leading-backslash
from csv.
I've added quote_empty
option.
from csv.
Related Issues (20)
- ArgumentError: unknown encoding name - iso-8859-1|utf-8 HOT 2
- Feature Request: Generate CSV String from Array HOT 5
- #eof? method returning wrong value when it's used on a csv file HOT 3
- #eof? method returning wrong value when it's used on a csv file with #each, #map, #filter HOT 1
- row access method(like .first, .count, .map) remove row unintentionally HOT 2
- New release for Ruby 3.2 HOT 7
- How about GH releases generated by `gh release create --generate-notes` HOT 5
- feature: add option to limit length of strings HOT 3
- Suggestion to add `sep` option HOT 1
- Broken links in documention HOT 11
- Duplicated last line in CSV.foreach HOT 14
- Recipes not copied downstream HOT 6
- A fiber to execute ':heder_converters' has been changed since v3.2.6 HOT 1
- liberal parsing does not split column as expected with quote at end of column HOT 8
- Inconsistent behaviour between `CSV::Table.new` and `CSV.parse` HOT 10
- Loading line becomes strange when skip_lines is specified HOT 6
- Read StringIO with foreach HOT 2
- feature request: Warn when reading BOM text with headers option HOT 16
- Rename the default branch name to "main" from "master"
- CSV.filter(input, output, headers: true) does not write the header row to output! HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from csv.