Удалить строки, которые содержат числа в Python - PullRequest
0 голосов
/ 17 мая 2018

Мне нужно скопировать файл, но перед этим мне нужно удалить строки с номерами.

это мой файл:

0:00:00.000,0:00:06.410
let's start with

0:00:04.470,0:00:10.769
something

0:00:06.410,0:00:12.360
easy

и я хочу что-то вроде этого:

let's start with something easy

и это мой код:

readFile = open("file.sbv")
writeFile = open("newwordlist.sbv","w")

for line in readFile: 
    newline = line.rstrip('\r\n')
    writeFile.write(newline)
readFile.close()
writeFile.close()

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

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

readFile = open("file.sbv")
writeFile = open("newwordlist.sbv","w")

for line in readFile: 
    newline = line.rstrip('\r\n')
    if not re.search(r'^\d:\d{2}:\d{2}\.\d{3},\d:\d{2}:\d{2}\.\d{3}$', newline, re.M|re.I)
        writeFile.write(newline)
readFile.close()
writeFile.close()

Этот ответ предполагает, что, возможно, у вас есть строки, содержащие числа, но вы не хотитечтобы удалить те.Шаблон, который я использовал, нацелен на временные метки в ваших данных.

0 голосов
/ 17 мая 2018

Для этого вам не нужно регулярное выражение, вы можете просто использовать any(i.isdigit() for i in line):

with open('in.txt') as infile, open('out.txt', 'w') as outfile:
  for line in infile:
    if not any(i.isdigit() for i in line):
      outfile.write(line)

in.txt

0:00:00.000,0:00:06.410
let's start with
0:00:04.470,0:00:10.769
something
0:00:06.410,0:00:12.360
easy

out.txt

let's start with
something
easy

Если вы хотите получить результаты в одной строке, вы можете написать line.rstrip('\r\n') вместо line, однако это зависит от того, какие окончания строк использует ваш файл, это может быть просто \n.

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