Удалить пробел из строки CSV

Мне нужно удалить или выделить пробелы из строк CSV.

test.csv

60 500, # want 60500
8 100, # want 8100
5 400, # want 5400
480, # want 480

remove_space.rb

require 'csv'
CSV.foreach('test.csv') do |row|
    row = row[0]
    row = row.strip
    row = row.gsub(" ","")
    puts row
end

Я не понимаю, почему это не работает. Результат такой же, как и в test.csv

Есть идеи?

CSV означает значения, разделенные запятыми. ИМО, ваш файл не в формате CSV. Каков именно ваш ожидаемый результат?
spickermann 22.05.2019 11:43

@spickermann Я просто обновляю свой вопрос

Rubyx 22.05.2019 11:48
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
2
379
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Дело в том, что это не нормальные места, а скорее Узкие неразрывные пробелы:

require 'csv'
CSV.foreach('/tmp/test.csv') do |row|
    puts row[0].delete "\u202f"
end
#⇒ 60500
#  8100
#  5400
#  480

Вы можете удалить все места, включая Unicode, используя \p{Space} матчер.

require 'csv'
CSV.foreach('/tmp/test.csv') do |row|
    puts row[0].gsub /\p{Space}/, ''
end
Ответ принят как подходящий

Ваш файл test.csv содержит узкое неразрывное пространство (U+202F) символов Юникода. Это символ без пробелов. (Обычный пробел — это U+0020.)

Вы можете увидеть различные возможные пробелы Unicode здесь: http://jkorpela.fi/chars/spaces.html

Вот более общий сценарий — с использованием Группа квадратных скобок POSIX — для удаления всех «космических» символов:

require 'csv'
CSV.foreach('test.csv') do |row|
  row = row[0]
  row = row.gsub(/[[:space:]]/,"")
  puts row
end

спасибо я не знал! Я буду читать разные пробелы юникода

Rubyx 22.05.2019 11:50

Другие вопросы по теме