Что нового

[Автоматизация] Скопировать определенные строки из текстового файла

Evochka Turkova

Новичок
Сообщения
39
Репутация
0
Всем привет!!!!!

Помогите со скриптом!! Имеется текстовой файл, там много строк, букв и ББ кодов, но мне нужно скопировать только нужные строчки и соединить их.

Сами строчки:

Код:
Тут текст...
<h3>Нужный текст1*</h3>
Тут текст...
<input class="code" onfocus="this.select();" onmouseup="return false" value="Нужный текст2*">
Тут текст...

* Примечание, Нужный текст1 и Нужный текст2 все разные. Одинаковые только ББ коды, в которые заключены тексты.
На выходе получить:

Код:
Нужный текст 1 : Нужный текст2
Нужный текст 1 : Нужный текст2
Нужный текст 1 : Нужный текст2
Нужный текст 1 : Нужный текст2
и т.д.

строк таких много может 600-700, help!!!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Evochka Turkova [?]
Нужный текст1 и Нужный текст2 все разные. Одинаковые только ББ коды, в которые заключены тексты.
Вы покажите хотя бы кусок реального текста.
 
Автор
E

Evochka Turkova

Новичок
Сообщения
39
Репутация
0
madmasles :( :(

Код:
<div id="profcontent"><div class="profitem" data-id="5167682972987168416" data-way-id="">
  <header>
  <span class="caption">#4</span>
    <span class="info">
      
      <span class=""></span>
      on
      
      2014
    </span>
  </header>
  <article style="display: none;"><div class="product">
<img class="cover" src="./sq.jpg">
<div class="details">
<h3>Нужный текст1</h3>
<div class="download-container">
<ul class="Data">
<li class="Data" data-id="5167682972987168416">
<strong>Tools</strong>
Data:
 
<div class="Data-meta">
<label>
<input class="usage" type="checkbox">
out
</label>
</div>
<p>
<input class="code" onfocus="this.select();" onmouseup="return false" value="Нужный текст2">
<button class="way">
<span class="icon iconway"></span>
</button>
<button class="add">
<span class="icon iconadd"></span>
</button>
</p>
</li>
</ul>
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
#include <String.au3>
$fr = FileRead('test.txt')
;собственно, последующие две строки и есть поиск нужных значений. на выходе будет два массива - $val1 , $val2
$val1 = _StringBetween($fr, '<h3>', '</h3>')
$val2 = _StringBetween($fr, 'value="', '">')

;ниже код, который учитывает возможность разницы количества данных в массивах и исходя из этого пишет значения ячеек массивов в консоль(можно писать в файл)
Local $res1 = UBound($val1),$res2 = UBound($val2)
If $res1 > $res2 Then
	For $i = 0 To $res2 - 1
		ConsoleWrite($val1[$i] & ' : ' & $val2[$i] & @LF)
	Next
	For $n = $i To $res1 - 1
		ConsoleWrite($val1[$n] & ' : Пустой элемент' & @LF)
	Next
ElseIf $res1 < $res2 Then
	For $i = 0 To $res1 - 1
		ConsoleWrite($val1[$i] & ' : ' & $val2[$i] & @LF)
	Next
	For $n = $i To $res2 - 1
		ConsoleWrite('Пустой элемент : ' & $val2[$n] & @LF)
	Next
Else
	For $i = 0 To $res1 - 1
		ConsoleWrite($val1[$i] & ' : ' & $val2[$i] & @LF)
	Next
EndIf
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Evochka Turkova,
Если нужные значения обязательно идут парами, то мои два варианта.
Код:
#include <Array.au3>

Local $s_File = @ScriptDir & '\html.txt', $v_Tmp, $a_Tmp, $a_Res[1][2]

$v_Tmp = FileRead($s_File)
$a_Tmp = StringRegExp($v_Tmp, '(?is)<h3>(.+?)<.+?value="(.+?)">', 3)
$v_Tmp = UBound($a_Tmp)
If (Not $v_Tmp) Or (Mod($v_Tmp, 2)) Then Exit 1
ReDim $a_Res[$v_Tmp / 2 + 1][2]
For $i = 0 To $v_Tmp - 1 Step 2
	$a_Res[0][0] += 1
	For $j = 0 To 1
		$a_Res[$a_Res[0][0]][$j] = $a_Tmp[$i + $j]
	Next
Next
$a_Tmp = 0
_ArrayDisplay($a_Res)
Код:
Local $s_File = @ScriptDir & '\html.txt', $v_Tmp, $a_Tmp, $s_Res

$v_Tmp = FileRead($s_File)
$a_Tmp = StringRegExp($v_Tmp, '(?is)<h3>(.+?)<.+?value="(.+?)">', 3)
$v_Tmp = UBound($a_Tmp)
If (Not $v_Tmp) Or (Mod($v_Tmp, 2)) Then Exit 1
For $i = 0 To $v_Tmp - 1 Step 2
	$s_Res &= $a_Tmp[$i] & ' : ' & $a_Tmp[$i + 1] & @CRLF
Next
$a_Tmp = 0
ConsoleWrite($s_Res)
 
Автор
E

Evochka Turkova

Новичок
Сообщения
39
Репутация
0
joiner
madmasles

Спасибочки за помощь. Но как нужно отработал только один, это 2 вариант от madmasles. :smile: :smile: :smile:

ЗЫ: :IL_AutoIt_1:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Evochka Turkova
а в моем варианте что не так сработало?
можно ли для теста получить полный реальный файл?.
на том тестовом куске все работает как надо
 
Верх