2017-02-14 10 views
0

Это связано с обрезкой процесса csv-файла. У меня есть файл csv в формате mar, который имеет 4 столбца, но в последнем столбце слишком много (и неизвестного числа) запятых.Python: замените первую n-ю соответствующую букву на другую букву

Я хочу заменить разделитель на другой символ, такой как «|» Например, строка = «a, b, c, d, e, f» в «a | b | c | d, e, f»

Следующие коды работают, но мне нравится находить лучшее и эффективный способ обработки большого размера txt-файла.

sample_txt='a,b,c,d,e,f' 
temp=sample_txt.split(",") 
output_txt='|'.join(temp[0:3])+'|'+','.join(temp[3:]) 
+0

Является ли ваш текст большим из-за многих строк или из-за очень длинных строк? Если у вас много коротких строк, я сомневаюсь, что вы можете сделать гораздо лучше, чем то, что у вас уже есть ... – Julien

ответ

1

Python имеет идеальный способ сделать это, с str.replace:

>>> sample_txt='a,b,c,d,e,f' 
>>> print(sample_txt.replace(',', '|', 3)) 
a|b|c|d,e,f 

str.replace принимает необязательный третий аргумент (или четвёртым, если считать self), который диктует максимальное количество замен, чтобы случиться.

+1

Спасибо за хорошее и аккуратное решение. Я должен проверить детали базовых функций python еще раз. – notilas

1
sample_txt='a,b,c,d,e,f' 
output_txt = sample_txt.replace(',', '|', 3)