Выбрать нужное значение после запятой в строке
Есть txt файл в котором содержатся подобные строки (их 60+):
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
...
И т.д. помогите обработать так, чтобы можно было взять второе, третье или четвертое значение (на выбор) и записать в файл. В итоге, чтобы получилось так, например, если выбрать второе:
grep_req_das: 1
grep_req_says: 3
ПРЕК.req: 3
ПРЕК RI.req: 3
Я использую split, но берётся только первое значение и записывается в файл:
with open('test.txt', 'r') as f:
with open('test2.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)
Вывод:
grep_req_das: 10
grep_req_says: 12
ПРЕК.req: 20
ПРЕК RI.req: 12
Ответы (2 шт):
Автор решения: Sergei Kirjanov
→ Ссылка
Разделите сначала по ":", потом по ",", без пределов.
test_string = 'grep_req_says: 12, 3, 1, 30'
key, valuesStr = test_string.split(":")
values = valuesStr.split(",")
print(key + ":" + values[0])
Автор решения: Gladius
→ Ссылка
Вы можете воспользоваться регулярными выражениями:
import re
test_string = 'grep_req_says: 12, 3, 1, 30'
word = re.findall(r'[\D]+', test_string)[0]
number = re.findall(r'[\d]+', test_string)[здесь указываете номер значения, например 2]
print('{}{}'.format(word, number))
Вывод: grep_req_says: 1
Полный код:
import re
with open('test.txt', 'r') as f:
with open('test2.txt', 'w') as f1:
for line in f:
word = re.findall(r'[\D]+', line)[0]
number = re.findall(r'[\d]+', line)[2]
f1.write('{}{}\n'.format(word, number))