Что нового

Получить цифры из txt

Lamand

Новичок
Сообщения
15
Репутация
0
Есть файл - 1.txt, в нем такие данные:

---------------------
53933.0000

(обработано строк: 1)

Как с помощью Autoit получить из него все цифры до "." точки, ну и объявить в переменную и использовать в дальнейшем?
 

Alecsis

Осваивающий
Сообщения
114
Репутация
43
Самый примитивный ход примерно такой:
Код:
Opt('MustDeclareVars', True)
; ---------------------
#include <StringConstants.au3>
#include <Array.au3>
; ---------------------
Local _
  $sFText, _  ; текст из файла
  $aRes       ; результат разбора = массив выделенных цифр до первой тояки

; Пробный вариант «в лоб», т.е. без обработки возможных ошибок (т.н. «защиты от дурака»)
;

$sFText = FileRead('1.txt') ; беднм надеяться, что файл существует и нормально прочитался

#cs
Регулярное выражение (РВ) для построчного разбора файла; смысл элементов:
(?m)    = обработка каждой строки индивидуально
^       = маркер начала строки
(\d+)   = захват последовательности цифр перед точкой
\.\d+   = точка и цифры после неё, чтобы убедиться в корректном формате проверяемой строки
#ce
Local Const  $csRExp = '(?m)^(\d+)\.\d+'

; выбрать данные из строк, подходящих по формату, снова предполагаем, что всё Ok
;
$aRes = StringRegExp($sFText, $csRExp, $STR_REGEXPARRAYGLOBALMATCH) ; собственно разбор текста
_ArrayDisplay($aRes)  ; показать, что получилось
Exit


Сразу возникают закономерные вопросы:
#1 все ли требуемые строки соотв-ют формату вида 1234.567890?
#2 могут ли встретиться данные вида 123. = нет цифр после точки?
#3 то же, вида .123 = нет цифр перед точкой?
$4 то же, вида 123 = вообще без точки?
Как поступать в случаях #2 … #4?
А если файл вообще не прочитается?
Или в нём нет ни одной подобающей строки?
Есть куда копать… :acute:
 

Вложения

  • 1.txt
    124 байт · Просмотры: 1
  • 1.png
    1.png
    4.1 КБ · Просмотры: 1
Верх