2015-10-20 3 views
1

Я конвертирую xls в csv. Так как я имею запятые в одном столбце, я получаю CSV, как показано ниже:Удалить двойные кавычки из строки с запятой внутри csv

AMP FAN,Yes,Shichi,PON Seal,,"Brass, Silver" 
AMP FAN,Yes,Shichi,PON Seal,,"Platinum, Gel" 

Если вы видите двойные кавычки подходят для последнего столбца, как это запятой внутри. Теперь я читаю этот csv в файле tcl, и я отправляю его в свою целевую систему. В целевой системе это значение сохраняется с двойными кавычками (означает точно так же, как «Латунь, серебро»). Но пользователю не нужны эти двойные кавычки. Поэтому я хочу установить как Латунь, серебро. есть ли способ избежать двойных кавычек. ниже - текущий скрипт, который я использую.

while {[gets $fileIn sLine] >= 0} { 
     #using regex to handle multiple commas in a single column 

     set matches [regexp -all -inline -- {("[^\"]+"|[^,]*)(?:$|,)} $sLine] 
     set lsLine {} 
     foreach {a b} $matches {lappend lsLine $b} 
      set sType [lindex $lsLine 0]  
      set sIsOk [lindex $lsLine 1] 
      set sMaterial [lindex $lsLine 5] 

      #later i'm setting sMaterial to some attribute 
    } 

Просьба помочь.

Примечание: я не смогу использовать пакет csv, поскольку пользователь не имеет этого в своей среде, и я не могу добавить туда сам.

ответ

1

Вы можете удалить их из маркеров после получения каждого элемента, например:

while {[gets $fileIn sLine] >= 0} { 
    #using regex to handle multiple commas in a single column 

    set matches [regexp -all -inline -- {("[^\"]+"|[^,]*)(?:$|,)} $sLine] 
    set lsLine {} 
    foreach {a b} $matches { 
     # Remove the quotes here 
     lappend lsLine [string map {\" {}} $b] 
    } 
    set sType [lindex $lsLine 0]  
    set sIsOk [lindex $lsLine 1] 
    set sMaterial [lindex $lsLine 5] 

    #later i'm setting sMaterial to some attribute 
} 
+0

Спасибо и так много канистры :) U еще раз :) – Crazy2crack

+0

спас меня @ Crazy2crack Добро пожаловать! Просто случилось, чтобы проверить новые вопросы, когда увидели свое, вам повезло;) – Jerry

1
% set input {AMP FAN,Yes,Shichi,PON Seal,,"Brass, Silver"} 
AMP FAN,Yes,Shichi,PON Seal,,"Brass, Silver" 
% regsub -all \" $input {} 
AMP FAN,Yes,Shichi,PON Seal,,Brass, Silver 
% 
Смежные вопросы