在cs中用引号(或任何其他两个字符)括起一块文本

2024-09-30 04:28:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.csv文件,需要执行以下操作:对于每行,从行的结尾开始,指定字符出现一定次数后出现的文本应该用引号括起来

我会用一个例子让自己更清楚。考虑csv的以下行:

gentlemen, this is a block of text. Thanks!,1,0,0,1

我想用引号括起第四个逗号出现后从末尾开始出现的那一行。所以,它应该变成:

"gentlemen, this is a block of text. Thanks!",1,0,0,1

我想用bash、纯python或pandas来做


Tags: 文件ofcsvtext文本is结尾this
2条回答

使用sed:

$ sed -E 's/(.*)((,.*){4})/"\1"\2/' <<< 'gentlemen, this is a block of text. Thanks!,1,0,0,1'
"gentlemen, this is a block of text. Thanks!",1,0,0,1

它使用两个捕获组。重要的部分是(,.*){4}:这是逗号后跟任何东西的四个实例。因为第一组匹配贪婪,第二组将匹配行中的最后四个逗号

然后,替换在第一个组周围加上双引号,并打印第二个未修改的组

在python中:

line = r'gentlemen, this is a block of text. Thanks!,1,0,0,1'
num_commas = 4
comma_count = 0
for c in reversed(line):
    from_end += 1
    if c == ',':
        comma_count += 1
    if comma_count >= num_commas:
        break
line[:-from_end]
# 'gentlemen, this is a block of text. Thanks!'

其余的都是学术性的

相关问题 更多 >

    热门问题