Удалить символы в строке после запятой в Python
Есть txt файл в котором содержатся подобные строки (их 60+):
soler(count,min,avg,max):
grep_req_das: 10, 1, 1, 2
grep_req_says: 12, 3, 1, 30
ПРЕК.req: 20, 3, 1, 20
ПРЕК RI.req: 12, 3, 2, 80
...
И т.д. помогите удалить в каждой строке все, что стоит после первой запятой и саму запятую. В итоге, чтобы получилось так:
soler(count,min,avg,max):
grep_req_das: 10
grep_req_says: 12
ПРЕК.req: 20
ПРЕК RI.req: 12
Я использую split, но удаляется весь текст после первой запятой:
a_string = open("test.txt", "r", encoding="utf-8").read()
split_string = a_string.split(",", 1)
substring = split_string[0]
print(substring)
Вывод:
soler(count
Ответы (2 шт):
Автор решения: Vadim.Sharoikin
→ Ссылка
на скорую руку
with open('text.txt', 'r') as f:
all_str = f.read().splitlines()
print(all_str[0])
for el in all_str[1:]:
split_string = el.split(",", 1)
substring = split_string[0]
print(substring)
суть в том чтобы читать файл построчно и уже в каждой строке применять split
UPD
для записи в новый файл
with open('text.txt', 'r') as f:
with open('text1.txt', 'w') as f1:
all_str = f.read().splitlines()
f1.write("%s\n" % all_str[0])
for el in all_str[1:]:
split_string = el.split(",", 1)
substring = split_string[0]
f1.write("%s\n" % substring)
Автор решения: Namerek
→ Ссылка
Добавлю свои 5 копеек:
import re
with open("test.txt", "r", encoding="utf-8") as a_string:
print(re.findall(r'^.+?\d+', a_string.read(), flags=re.M))
# ['grep_req_das: 10', 'grep_req_says: 12', 'ПРЕК.req: 20', 'ПРЕК RI.req: 12']
или чтобы записать обратно скорректированные строки:
with open("test.txt", "r", encoding="utf-8") as a_string:
lines = re.findall(r'^.+?\d+', a_string.read(), flags=re.M)
with open("test.txt", "w", encoding="utf-8") as a_string:
a_string.write('\n'.join(lines))