записывать только определенные строки из файла a в файл b - PullRequest
0 голосов
/ 15 декабря 2018

У меня проблемы с записью только строк, представляющих интерес, в новый файл.

Файл f1 состоит из строк со следующим содержанием:

line =
'Raw,512561008,58913000000,,,-1226439751087359050,0.0,6.748478024207768,,,0,14,0.0,16397,510195928489024,10,33.76073455810547,91.65148631320972,0.0037611895240843296,1,6907.217495186118,0.0018805947620421648,1.56109798E9,,,,0,,5,,1.56109798E9'

Мне интересно писать строки, которые делаютне иметь '5' в качестве значения между индексами [-15: -14].Я написал следующую функцию, но когда я запускаю ее, новый файл все еще содержит нежелательные строки.Буду признателен, если кто-то может указать, что я делаю неправильно.Спасибо!.

def CleanGNSSLogger(ASCIIfileName,filterStr=None):
   try:
      with open(ASCIIfileName, 'r') as f1, open(ASCIIfileName[:-4]+'_clean'+ASCIIfileName[-4:],'w') as f2:
          for line in f1:
              if line[-15:-14] != '5':
                  f2.write(line)
   except IOError as e:
      print ('Operation failed: %s' % e.strerror)

   return

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Я бы сделал что-то подобное, поэтому вы убедитесь, что интересующее вас значение (5) надежно доступно:

SOME_NAME_INDEX = 29 # or the correct location of the value of interest

def CleanGNSSLogger(ASCIIfileName,filterStr=None):
    try:
        with open(ASCIIfileName, 'r') as f1, open(ASCIIfileName[:-4]+'_clean'+ASCIIfileName[-4:],'w') as f2:
            for line in f1:
                values = line.split(",")
                if values[SOME_NAME_INDEX] != '5':
                    f2.write(line)
    except IOError as e:
        print ('Operation failed: %s' % e.strerror)
0 голосов
/ 15 декабря 2018

Попробуйте

if "5" not in line[-15:-14]:

Проверьте, работает ли это.

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