найти и удалить любую строку, имеющую этот формат из текстового файла - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть текстовые файлы, которые содержат несколько строк в разных форматах. Мне нужно удалить любую строку, которая имеет только цифры в этом формате (число.). Например, я хочу удалить только эти строки (01., 19,31., 20.). Я не могу использовать цифры или позиции, потому что цифры и позиции отличаются от файла к другому

0.01        0.01        
80.            1
01. 
19. 
31. 
20. 
51. t4           0.
24. t3           0.
06. t2           0.
01. t1           0.

Я пытаюсь это сделать,

import re
with open("file.txt", "r") as f:
    lines = f.readlines()
with open("file.txt", "w") as f:
    for line in lines:
        if line.strip("\n") != re.match('[0-100].', line):
            f.write(line)

Результат, который я ищу

0.01        0.01        
80.            1
51. t4           0.
24. t3           0.
06. t2           0.
01. t1           0.

1 Ответ

2 голосов
/ 25 апреля 2020

Как сказано в комментариях, существует проблема с регулярным выражением. В вашем случае вам понадобится условие, подобное этому:

if not re.match('^[0-9]{1,3}\.$', line.strip()):

Матч будет от 0 до 999., если вы действительно хотите ограничить до 100. и всегда с ведущим 0 Таким образом, вы можете сделать что-то вроде этого:

if not re.match('^(?:[0-9]{2}|100)\.$', line.strip()):

Вы можете проверить свое регулярное выражение на таких сайтах, как этот: https://regex101.com/ (не забудьте выбрать Python на левая сторона)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...