如何用“||”替换第一个和最后一个“,”分隔符 来自 csv 而保留其他内容不变?

我有一个 CSV 文件:


101, "Name1", "Designation1", "blah1", "Blah1", 20200914001

102, "Name2", "Designation2", "blah2", "Blah2", 20200914002

103, "Name3", "Designation3", "blah3", "Blah3", 20200914003

104, "Name4", "Designation4", "blah4", "Blah4", 20200914004

105, "Name5", "Designation5", "blah5", "Blah5", 20200914005

将每一行替换如下:


101|| "Name1", "Designation1", "blah1", "Blah1"|| 20200914001

类似的结构也适用于其余的行/记录。


我的代码替换了所有分隔符。


data = ""

with open('firstCSV.csv', 'r') as file:

    data = file.read().replace(',', '||').replace(' ', '')


with open("first_Out.csv", "w") as out_file:

    out_file.write(data)

提前致谢。


MM们
浏览 151回答 2
2回答

繁星coding

使用^([^,]*),|,(?=[^,]*$)替换为\1||. 见证明。解释--------------------------------------------------------------------------------  ^                        the beginning of the string--------------------------------------------------------------------------------  (                        group and capture to \1:--------------------------------------------------------------------------------    [^,]*                    any character except: ',' (0 or more                             times (matching the most amount                             possible))--------------------------------------------------------------------------------  )                        end of \1--------------------------------------------------------------------------------  ,                        ','-------------------------------------------------------------------------------- |                        OR--------------------------------------------------------------------------------  ,                        ','--------------------------------------------------------------------------------  (?=                      look ahead to see if there is:--------------------------------------------------------------------------------    [^,]*                    any character except: ',' (0 or more                             times (matching the most amount                             possible))--------------------------------------------------------------------------------    $                        before an optional \n, and the end of                             the string--------------------------------------------------------------------------------  )                        end of look-aheadPython代码:import reregex = r'^([^,]*),|,(?=[^,]*$)'test_str = r'101, "Name1", "Designation1", "blah1", "Blah1", 20200914001'subst = r'\1||'print(re.sub(regex, subst, test_str))结果:101|| "Name1", "Designation1", "blah1", "Blah1"|| 20200914001.

隔江千里

您可以拆分第一个(maxsplit=1从左起)和最后一个(maxsplit=1从右起)逗号并连接结果,例如:>>> line = '101, "Name1", "Designation1", "blah1", "Blah1", 20200914001'>>> first, rest = line.split(',', maxsplit=1)>>> rest, last = rest.rsplit(',', maxsplit=1)>>> '||'.join((first, rest, last))'101|| "Name1", "Designation1", "blah1", "Blah1"|| 20200914001'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python