我有一个.csv文件,我需要执行以下操作:对于每行,从该行的 end 开始,一定数量的指定字符出现时应用引号引起来。
我将举一个例子,使自己更加清晰。考虑以下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来做。
答案 0 :(得分: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}
:这是逗号的四个实例,后跟任何东西。因为第一组贪婪地匹配,所以第二组将匹配行中的最后四个逗号。
然后替换将第一组括在双引号中,并打印未修改的第二组。
答案 1 :(得分:1)
在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!'
其余的都是学术性的。
答案 2 :(得分:0)
[SerializeField]
private GameObject toggleGO;
public void OnToggleClick() {
ToggleGameObject(toggleGO);
}