Удалить всё после N-ого символа Python

Нужно удалить всё в строке после 3й запятой

str = "['212301303010000', '212301303025000', 'РК84(2123 из 2х)УredALT', '2123-1303010']"

пробовал по-разному, после первой легко удалить, а вот после N-ой как-то не выходит.


Ответы (4 шт):

Автор решения: dIm0n

Удаление всего после 3 запятой:

import re

s = "['212301303010000', '212301303025000', 'РК84(2123 из 2х)УredALT', '2123-1303010']"
print(re.sub('([\s\S]+?,)([\s\S]+?,)([\s\S]+?,)[\s\S]*', '\g<1>\g<2>\g<3>', s))
→ Ссылка
Автор решения: Victor VosMottor

Eval is evil.

Использовать eval можно только, если вы уверены, что строка содержит правильный питоный код.

str_ = "['212301303010000', '212301303025000', 'РК84(2123 из 2х)УredALT', '2123-1303010']"
print(eval(str_)[:3])

Совет: не называйте переменные по именам функций, иначе вы их больше не сможете использовать в коде. По-английски это будет проще: Don't shadow built-ins!

→ Ссылка
Автор решения: S. Nick

как вариант:

str_ = "['212301303010000', '212301303025000', 'РК84(2123 из 2х)УredALT', '2123-1303010']"

print(','.join(str_.split(',')[:3]) + ']')
→ Ссылка
Автор решения: gil9red

Можно распарсить строку через ast.literal_eval и вытащить нужные элементы.

Пример:

import ast

text = "['212301303010000', '212301303025000', 'РК84(2123 из 2х)УredALT', '2123-1303010']"
data = ast.literal_eval(text)
print(data[:3])
# ['212301303010000', '212301303025000', 'РК84(2123 из 2х)УredALT']
→ Ссылка