Что нового

Редактирование TXT файла

OXIGEN

Новичок
Сообщения
30
Репутация
0
Всем здравствуйте. Имеется ТХТ файл "testin.txt" с текстом вида :

Самара

864 гр

Рязань

отправление

07.09.2023 19:50



Казань

1.560 кг

Гомель

отправление

08.09.2023 09:30



Псков

3.820 кг

Рязань

отправление

06.09.2023 21:40

Как можно привести его с сохранением в файл "testout.txt" в таком виде :

Самара 864 гр Рязань

Казань 1.560 кг Гомель

Псков 3.820 кг Рязань

То есть, убрать лишние пустые строки и оставить только первые три параметра в одну строку ?
 

Norm

Продвинутый
Сообщения
279
Репутация
74
Если строка выглядит действительно так, то можно так сделать
Код:
Local $sString = "Самара"& @CRLF & @CRLF &"864 гр"& @CRLF & @CRLF &"Рязань"& @CRLF & @CRLF & _
                "отправление"& @CRLF & @CRLF &"07.09.2023 19:50"& @CRLF & @CRLF & @CRLF & @CRLF & _
                "Казань"& @CRLF & @CRLF &"1.560 кг"& @CRLF & @CRLF &"Гомель"& @CRLF & @CRLF & _
                "отправление"& @CRLF & @CRLF &"08.09.2023 09:30"& @CRLF & @CRLF & @CRLF & @CRLF & _
                "Псков"& @CRLF & @CRLF &"3.820 кг"& @CRLF & @CRLF &"Рязань" & @CRLF & @CRLF & _
                "отправление"& @CRLF & @CRLF &"06.09.2023 21:40"

Local $aArray = StringRegExp(StringRegExpReplace($sString, "(?ms)отп.+?\d$\s*", ""), "\V+", 3)
$sString = ""
If IsArray($aArray) Then
    For $nN = 0 To UBound($aArray)-1 Step 3
        $sString &= $aArray[$nN] &" "& $aArray[$nN+1] &" "& $aArray[$nN+2] & @CRLF & @CRLF
    Next
EndIf

MsgBox(0,Default,$sString)
 
Автор
O

OXIGEN

Новичок
Сообщения
30
Репутация
0
Спасибо, но это немного не то... Исходный файл имеет сотни значений, я привёл только кусочек исходника и сохранять нужно из одного ТХТ в другой ТХТ.
 

Norm

Продвинутый
Сообщения
279
Репутация
74
Спасибо, но это немного не то...
Что не так? Всё делает так, как и просили
Самара 864 гр Рязань

Казань 1.560 кг Гомель

Псков 3.820 кг Рязань
Если это из ТХТ в ТХТ, то
Код:
Local $sString = FileRead(" ..... Путь к фаилу Test_In.txt")
Local $aArray = StringRegExp(StringRegExpReplace($sString, "(?ms)отп.+?\d$\s*", ""), "\V+", 3)
$sString = ""
If IsArray($aArray) Then
    For $nN = 0 To UBound($aArray)-1 Step 3
        $sString &= $aArray[$nN] &" "& $aArray[$nN+1] &" "& $aArray[$nN+2] & @CRLF & @CRLF
    Next
EndIf
Local $iFlop = FileOpen(" ..... Путь к фаилу Test_Out.txt", 2+8)
FileWrite($iFlop, $sString)
FileClose($iFlop)
 
Автор
O

OXIGEN

Новичок
Сообщения
30
Репутация
0
Да Всё Работает! Спасибо!
Сообщение автоматически объединено:

Да, можно немного подправить? Чтобы вместо строки "отправление", удалялась любая строка на этом месте...Просто кроме слова "отправление" есть другие значения. Спасибо заранее....
 
Последнее редактирование:

Norm

Продвинутый
Сообщения
279
Репутация
74
Поменайте эту строку
Код:
Local $aArray = StringRegExp(StringRegExpReplace($sString, "(?m)\V+\s+\V+\d$\s*", ""), "\V+", 3)
 
Автор
O

OXIGEN

Новичок
Сообщения
30
Репутация
0
Не работает, если вместо слова "отправление" стоит другое ((.....Я так понимаю, проблема наверное здесь - (?ms)отп.+?\d$\s*", "") ?
Сообщение автоматически объединено:

Не работает, если вместо слова "отправление" стоит другое ((.....Я так понимаю, проблема наверное здесь - (?ms)отп.+?\d$\s*", "") ?
Упс. не увидел ответа, попробую поменять!
Сообщение автоматически объединено:

Не работает, если вместо слова "отправление" стоит другое ((.....Я так понимаю, проблема наверное здесь - (?ms)отп.+?\d$\s*", "") ?
Сообщение автоматически объединено:


Упс. не увидел ответа, попробую поменять!
Нет, что-то не так с переносами .... Но может можно упростить? Пусть будет такая вводная, без пустых строк!
(Я их уберу. Попытался разобраться с метасимволами, пока не получается ) и два последних значения можно не убирать. Просто каждые пять строк сделать в одну строку и каждые последующие тоже.

из этого :

Самара
864 гр
Рязань
отправление
07.09.2023 19:50
Казань
1.560 кг
Гомель
отправление
08.09.2023 09:30
Псков
3.820 кг
Рязань
отправление
06.09.2023 21:40

Сделать :

Самара 864 гр Рязань отправление 07.09.2023 19:50
Казань 1.560 кг Гомель отправление 08.09.2023 09:30
Псков 3.820 кг Рязань отправление 06.09.2023 21:40

Только вот четвертое значение из пяти - "отправление" - может состоять из любой раскладки и символов
 
Последнее редактирование:

Norm

Продвинутый
Сообщения
279
Репутация
74
Я думаю сможите разобратьса как что-то добавить или убавить
Код:
Local $sString = "Самара"& @CRLF & @CRLF &"864 гр"& @CRLF & @CRLF &"Рязань"& @CRLF & @CRLF & _
                "отправление"& @CRLF & @CRLF &"07.09.2023 19:50"& @CRLF & @CRLF & @CRLF & @CRLF & _
                "Казань"& @CRLF & @CRLF &"1.560 кг"& @CRLF & @CRLF &"Гомель"& @CRLF & @CRLF & _
                "отправление"& @CRLF & @CRLF &"08.09.2023 09:30"& @CRLF & @CRLF & @CRLF & @CRLF & _
                "Псков"& @CRLF & @CRLF &"3.820 кг"& @CRLF & @CRLF &"Рязань" & @CRLF & @CRLF & _
                "отправление"& @CRLF & @CRLF &"06.09.2023 21:40"

Local $aArray = StringRegExp($sString,"\V+",3)
$sString = ""
If IsArray($aArray) Then
    For $nN = 0 To UBound($aArray)-1 Step 5
        $sString &= $aArray[$nN] &" "& $aArray[$nN+1] &" "& $aArray[$nN+2] & @CRLF & @CRLF
    Next
EndIf
MsgBox(0,"Variant-1",$sString)

$sString = ""
If IsArray($aArray) Then
    For $nN = 0 To UBound($aArray)-1 Step 5
        $sString &= $aArray[$nN] &" "& $aArray[$nN+1] &" "& $aArray[$nN+2] & @CRLF
    Next
EndIf
MsgBox(0,"Variant-2",$sString)

$sString = ""
If IsArray($aArray) Then
    For $nN = 0 To UBound($aArray)-1 Step 5
        $sString &= $aArray[$nN] &" "& $aArray[$nN+1] &" "& $aArray[$nN+2] &" "& $aArray[$nN+3] &" "& $aArray[$nN+4] & @CRLF
    Next
EndIf
MsgBox(0,"Variant-3",$sString)
 
Автор
O

OXIGEN

Новичок
Сообщения
30
Репутация
0
ОГРОМНЕЙШЕЕ СПАСИБО!!! Сработал вот этот вариант!

Код:
Local $sString = FileRead(@ScriptDir & "\Test0.txt")

Local $aArray = StringRegExp($sString,"\V+",3)
$sString = ""
If IsArray($aArray) Then
    For $nN = 0 To UBound($aArray)-1 Step 5
        $sString &= $aArray[$nN] &" "& $aArray[$nN+1] &" "& $aArray[$nN+2] & @CRLF & @CRLF
    Next
EndIf

Local $iFlop = FileOpen(@ScriptDir & "\Test1.txt", 2+8)
FileWrite($iFlop, $sString)
FileClose($iFlop)
 
Верх