Как мне искать и сопоставлять содержимое в файле? - PullRequest
0 голосов
/ 03 января 2012

У меня есть текстовый файл:

<table style="background-color: #f3f3f3; font-family: Arial; font-size: 8pt; border-top: #e7e7e7 5px solid" border="0" cellspacing="0" cellpadding="0">
  <tbody>
<tr>
<td style="padding-bottom: 20px; padding-left: 20px; padding-right: 20px; padding-top: 20px">
<p style="color: #b0b0b0"><font color="#808080" size="1"><strong>Important information</strong>: on this communication as it does not purport to be comprehensive. This disclaimer does not purport to exclude any warranties implied by law which may not be lawfully excluded. We have taken precautions to minimise the risk of transmitting software viruses, but we advise you to carry out your own virus checks on any attachment to this e-mail. We cannot accept liability for any loss or damage caused by software </p>

Это не дамп сайта, это то, что приложение помещает в файл.

Мой метод проверки текстового файла выглядит так:

def check_email_exists(firstname, email_sub, search_string)
email_fldr="C:\\Agent\\TestMailFolder"
email_id="myname@gmail.com"
Dir.chdir("#{email_fldr}\\#{firstname}") do
  Dir.glob("#{email_id}*#{email_sub}*") do |filename|
    File.open(filename) do |file|
      file.readlines(filename).index("#{search_string}")
    end
   end
  end
end

Это не работает.

Я передаю значения в моем search_string, которые являются строками. Например, я пытаюсь увидеть, есть ли в файле string = "transmitting software". Также я проверяю, содержит ли файл некоторые случайные строки, которых там нет. В этом случае он должен пройти, если найдет и сопоставить значение в файле, и потерпеть неудачу, если не сможет.

1 Ответ

0 голосов
/ 03 января 2012

Ваш файл содержит HTML.Для 90% + приложений, использующих HTML, вы должны использовать парсер.Я рекомендую Nokogiri .

require 'nokogiri'

html = <<EOT
<table style="background-color: #f3f3f3; font-family: Arial; font-size: 8pt; border-top: #e7e7e7 5px solid" border="0" cellspacing="0" cellpadding="0">
  <tbody>
<tr>
<td style="padding-bottom: 20px; padding-left: 20px; padding-right: 20px; padding-top: 20px">
<p style="color: #b0b0b0"><font color="#808080" size="1"><strong>Important information</strong>: on this communication as it does not purport to be comprehensive. This disclaimer does not purport to exclude any warranties implied by law which may not be lawfully excluded. We have taken precautions to minimise the risk of transmitting software viruses, but we advise you to carry out your own virus checks on any attachment to this e-mail. We cannot accept liability for any loss or damage caused by software </p>
EOT

doc = Nokogiri::HTML::DocumentFragment.parse(html)

content = doc.content

puts content

Какие выходы:

Important information: on this communication as it does not purport to be comprehensive. This disclaimer does not purport to exclude any warranties implied by law which may not be lawfully excluded. We have taken precautions to minimise the risk of transmitting software viruses, but we advise you to carry out your own virus checks on any attachment to this e-mail. We cannot accept liability for any loss or damage caused by software 

Если вы хотите увидеть, содержат ли результаты строку «Передающая программа», попробуйте это дополнительно:

puts "contains tranmitting software" if (content['transmitting software'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...