我有一个CSV文件,其中包含一些值的换行符。例如:
"Chiffre","Nom","Descriptif court","Tarifs en clair","Période en clair","Adresse 1","CP","Tel","Site","Facebook","Pictos","@Saveurs","@Famille plus","@Img","Accessible en fauteuil roulant en autonomie","Handicapes","Terrasse","Wifi","Chèque Vacances","Titre Restaurant"
6,"Le Chalet d'en Ô","Cuisine traditionnelle (foie gras, magret myrtilles, croustillant chocolat)
Spécialités savoyardes (fondue, tartiflette.. )
Garanti sans burgers.
Tout est fait maison.Cuisine traditionnelle (foie gras, magret myrtilles, croustillant chocolat)
Spécialités savoyardes (fondue, tartiflette.. )
Garanti sans burgers.
Tout est fait maison.","Menu adulte : de 20 à 30 €
Menu enfant : 10 €.
Suggestion du jour le midi en semaine : entrée,plat, dessert : 20€.Menu adulte : de 20 à 30 €
Menu enfant : 10 €.
Suggestion du jour le midi en semaine : entrée,plat, dessert : 20€.","Midi et soir du jeudi au samedi + midi le dimanche et jours fériés.
Juillet et août, midi et soir du mardi au samedi et midi uniquement dimanche et jours fériés.Midi et soir du jeudi au samedi + midi le dimanche et jours fériés.
Juillet et août, midi et soir du mardi au samedi et midi uniquement dimanche et jours fériés.","Le Cropt - Route de Serraval","74230 Les Clefs","+33 4 50 02 09 00","www.lechaletdeno.com",,"A R J X x",,,,,"A","R","J","X","x"
7,"La Cabane - Pisciculture de Montremont","Bar - restaurant au bord de la rivière dans un cadre champêtre avec sa spécialité la truite.","Menu adulte : de 26 à 35 €.","Juin et septembre : du mercredi au dimanche.
Juillet et août : tous les jours à midi + mercredi à samedi le soir.Juin et septembre : du mercredi au dimanche.
Juillet et août : tous les jours à midi + mercredi à samedi le soir.","Pisciculture de Montremont - 100 impasse des Pesetz","74230 Thônes","+33 4 50 02 00 85","pisciculture-montremont.fr",,"A R X x",,,,,"A","R",,"X","x"
只需要用空格(或任何东西)替换任何换行符。
尝试了很多现有的解决方案,但使用\\n
作为搜索词似乎不起作用,还有其他问题。
你知道吗?谢谢。
Sublime Text就足够了,但如果另一个工具更容易,没有问题。
编辑:\n
如果我只有这个作为搜索词,就可以正常工作。但是我只需要在"
之间找到它们。到目前为止,我得到的最好的是匹配"
之间的所有文本:(?<=")[^"]*
。
2条答案
按热度按时间83qze16e1#
你不能用一个安全的方式用文本编辑器来做这件事,因为开始和结束分隔符是相同的,任何基于lookaround的解决方案,或者基于
\G
的解决方案都不能很好地工作。使用一些支持回调方法/函数的编程语言作为正则表达式替换方法/函数中的替换参数,将任何双引号子字符串与
参见regex demo。如果你不需要在意双引号,一个简化的版本是
"[^"]+"
。详情
"
-双引号[^"]*
- 0+双引号以外的字符(?:
-重复0+次的分组构造""
- 2双引号[^"]*
- 0+双引号以外的字符)*
-"
-双引号。这个正则表达式可以按如下方式使用:读取文件并使用以下解决方案:
re.sub(r'"[^"]*(?:""[^"]*)*"', lambda m: m.group(0).replace("\n", ""), s)
s = s.replace(/"[^"]*(?:""[^"]*)*"/g, function(m) { return m.replace(/\n/g, ''); })
$s = preg_replace_callback('~"[^"]*(?:""[^"]*)*"~', function($m) { return str_replace("\n", "", $m[0]); }, $s)
s = Regex.Replace(s, "\"[^\"]*(?:\"\"[^\"]*)*\"", m => m.Value.Replace("\n", ""))
如果你有
\r
和\n
要删除,作为第二步,你可以在JS中使用.replace(/[\r\n]+/g, '')
,在PHP中使用preg_replace('~\R+~', '', $m[0])
,在C#中使用m.Value.Replace("\r", "").Replace("\n","")
,在Python中使用m.group(0).replace("\n", "").replace("\n", "")
。在C#中,完整的解决方案如下所示
8i9zcol22#
使用Notepad++ regex查找和替换:
查找内容:
替换为:
(1元后有一个空格)
重复单击“全部替换”,直到找不到更多匹配项。