file1 = open('test.txt', 'r') text1 = file1.read() import re even_num = [] new_t=[] for int_numbers in range(0, len(re.findall(r"[0-9]+", text1))): if int(re.findall(r"[0-9]+", text1)[int_numbers]) % 2 == 0: even_num.append(re.findall(r"[0-9]+", text1)[int_numbers]) for iii in range(0,len(re.split(r"\s|\,", text1))-1): if re.split(r"\s|\,", text1)[iii] not in even_num: new_t.append(re.split(r"\s|\,", text1)[iii]) print(new_t) 

As a result, all the even numbers were deleted, but I had difficulty with writing the result in the same file in the same format. Tell me, please

  • Isn't it simpler to stupidly replace all fragments (a non-digit — a bunch of digits — an even digit — a non-digit) with a single space or is there a line break? - Akina
  • @Akina Don't forget that he is new. - ʞɔᴉN ɹǝꓥ
  • What is the problem? How to write to the file or in the same format? - Enikeyschik

1 answer 1

 import re res = re.sub('(\d+)', lambda m: m.group(1) if int(m.group(1)) % 2 else '', text) 

or so (checking that the number ends with ('1','3','5','7','9') - thanks to @VasylKolomiets for the hint):

 res = re.sub('(\d+)', lambda m: m.group(1) if m.group(1).endswith(tuple('13579')) else '', text) 

result:

 In [438]: re.sub('(\d+)', lambda m: m.group(1) if int(m.group(1)) % 2 else '', text) Out[438]: 'Определение целых чисел утверждает, что любое из чисел 1, , 3, , число , а также любое из чисел 671, , 35 является целым. Теперь мы легко можем привести примеры целых чисел. Например, число – целое, число – тоже целое, нуль – целое число (напомним, что нуль НЕ является натуральным числом, нуль – целое число), числа 999, 1, , 93, , – также являются примерами целых чисел. Все целые числа удобно представлять как последовательность целых чисел, которая имеет следующий вид: , 1, , 3, … Последовательность целых чисел можно записать и так: …, , 1547, , ,457,,345,,789. Из определения целых чисел следует, что множество натуральных чисел является подмножеством множества целых чисел. Поэтому, любое натуральное число является целым, но не любое целое число является натуральным.' 
  • one
    well, in fact, the even ends at 0 * 2 * 4 * 6 * 8 - so you can do without division) - Vasyl Kolomiets
  • @VasylKolomiets, good idea, thanks! Added in reply ... - MaxU