Permalänk
Medlem

Hitta och matcha en serie nummer

Jag har en textfil där jag skulle vilja identifiera en viss nummerföljd per rad som är unik.
Finns det något enkelt sätt söka och matcha den här serien med något program?
Den måste kunna ignorera innehållet efter numret.

Exempel, kända serien ser exakt ut så här.

1 2 3 4

Hitta och matcha mot det här listan tex,

5 XKK 6 OSD 4 ABC 6 oFJS 1 SMK 2 OJKS 3 SFF 4 SFLS 6 SKF 3 OJIS 7 UIF 8 SOFJ

Permalänk
Avstängd

@Bozzeta:

Jag skulle kunna hjälpa dig.

Är det siffran i början som man ska söka efter eller är det den andra ska söka efter?

Skulle du kunna göra lite mer tex?

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Medlem

Varje rad inleds med en siffra, så det är själva siffran som hittas men det som är av intresse är den unika följden, alltså siffrorna 1, 2, 3, 4 i den följden.
Om det är enklare så kan du tänka dig ett excelark där
Kolumn 1, rad 1 innehåller värdet 1
Kolumn 1, rad 2 innehåller värdet 2
Kolumn 1, rad 3 innehåller värdet 3
Kolumn 1, rad 4 innehåller värdet 4
Ignorera all annan information i textdokumentet förutom denna följd.
Kan lite java, men tänkte om det finns något befintligt program som har lite mer avancerad sökfunktion.

Permalänk
Avstängd
Skrivet av Bozzeta:

Varje rad inleds med en siffra, så det är själva siffran som hittas men det som är av intresse är den unika följden, alltså siffrorna 1, 2, 3, 4 i den följden.
Om det är enklare så kan du tänka dig ett excelark där
Kolumn 1, rad 1 innehåller värdet 1
Kolumn 1, rad 2 innehåller värdet 2
Kolumn 1, rad 3 innehåller värdet 3
Kolumn 1, rad 4 innehåller värdet 4
Ignorera all annan information i textdokumentet förutom denna följd.
Kan lite java, men tänkte om det finns något befintligt program som har lite mer avancerad sökfunktion.

Du vill bara söka efter den unika koden eller både och?

Ska du söka en i taget?

Edit: Jag gjorde denna lite snabbt den söker efter serienummer och sen så får du ut både siffran och serienummer.

https://minfil.org/kaI7wdb1b2/Bozzeta_matcha_serie_nummer.rar

File
Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Medlem

Om du läser in filen som en sträng och sedan split på radbryt så får du en array med ett element för varje rad. Har du ett tomt element signalerar det en ny sekvens. Sen kan du köra en split till på varje element, fast på mellanslag och där välja första elementet vilket bör vara numret.
Eller kanske bara en startswith, men då får du träff på 13,21,37,43 också

Skickades från m.sweclockers.com

Visa signatur

Oldschool [å:ldsku:l] adj. Användandet av datorprodukter som är äldre än 3 månader.

Permalänk
Medlem
Skrivet av superegg:

Du vill bara söka efter den unika koden eller både och?

Ska du söka en i taget?

Både och antar jag.
Det är ett gäng detektorer som har ett ID, dessa generar sedan en massa skräpkod efter namnet på dektorn (ID).
Det intressanta är dock följden i vilka detektorerna aktiverats.
Jag söker en viss följd där detektorerna aktiverats.

Skrivet av kundun:

Om du läser in filen som en sträng och sedan split på radbryt så får du en array med ett element för varje rad. Har du ett tomt element signalerar det en ny sekvens. Sen kan du köra en split till på varje element, fast på mellanslag och där välja första elementet vilket bör vara numret.
Eller kanske bara en startswith, men då får du träff på 13,21,37,43 också

Skickades från m.sweclockers.com

Detta är för avancerat för mig.
Det jag kan göra är att importera textfilen i excel och filtrera bort allt annat än själva ID.

Permalänk
Avstängd
Skrivet av Bozzeta:

Både och antar jag.
Det är ett gäng detektorer som har ett ID, dessa generar sedan en massa skräpkod efter namnet på dektorn (ID).
Det intressanta är dock följden i vilka detektorerna aktiverats.
Jag söker en viss följd där detektorerna aktiverats.

Detta är för avancerat för mig.
Det jag kan göra är att importera textfilen i excel och filtrera bort allt annat än själva ID.

Update: https://minfil.org/laI8w8b1be/Bozzeta_matcha_serie_nummer_2.r... (plus källkod)

SN = Serienummer
N = Nummer

Denna söker efter nummer och serienummer finns två knappar hoppas att denna hjälper dig.

Du kan ändra texten i källkoden då jag skriver så där.

Förklara lite bättre än innan
Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Medlem

Tack ska se om jag får ordning på det...

Permalänk
Medlem

Gjorde ett litet snabbt python skript baserat på formatet du specificerade. Går såklart att lösa på många sätt

fil.txt

5 XKK 6 OSD 4 ABC 6 oFJS 1 SMK 2 OJKS 3 SFF 4 SFLS 6 SKF 3 OJIS 7 UIF 8 SOFJ

find.py

import sys pattern = '1234' with open('fil.txt', 'r') as file: found = [] i = 0 r = 0 line = file.readline() while line and i < len(pattern): line = line.strip().split(' ') if len(line) > 1 and len(line[0]) == 1 and line[0] == pattern[i]: i += 1 found.append(line) else: i = 0 found = [] line = file.readline() r += 1 if found: print 'Found pattern starting on row %d' % (r-3) print found

$ python find.py Found pattern starting on row 6 [['1', 'SMK'], ['2', 'OJKS'], ['3', 'SFF'], ['4', 'SFLS']]

Eller hade du något specifikt språk du ville köra detta i?

Permalänk
Medlem

Går att lösa med hjälp av regex:
https://regex101.com/r/QWufyp/2

Permalänk
Medlem
Skrivet av trexake:

Eller hade du något specifikt språk du ville köra detta i?

Java är det jag känner till, men jag försökte köra ditt script men får följande fel.

File "find.py", line 26
print 'Found pattern starting on row %d' % (r-3)
^
SyntaxError: invalid syntax

Permalänk
Medlem
Skrivet av Bozzeta:

Java är det jag känner till, men jag försökte köra ditt script men får följande fel.

File "find.py", line 26
print 'Found pattern starting on row %d' % (r-3)
^
SyntaxError: invalid syntax

Jag körde python 2, antar att du kör python 3. tompa89's regex lösning fungerar också. Tror att syntaxen för python 3 ska vara:

print('blablabla')

Permalänk
Medlem
Skrivet av trexake:

Jag körde python 2, antar att du kör python 3. tompa89's regex lösning fungerar också. Tror att syntaxen för python 3 ska vara:

print('blablabla')

Coolt, fick det att fungera!
Ska försöka gräva ner mig lite mer i koden... var några år sedan jag programmerade något vettigt

Permalänk
Medlem

Om du ska jobba mycket med textsökningar så rekommenderar jag dig att lära dig Regex som nämdes ovan.

Skickades från m.sweclockers.com

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem

En annan lösning är att bara använda en textredigerare som kan söka med reguljäruttryck. I VIM så kan man t.ex. använda kommandot /^1.*\n2.*\n3.*\n4 för att söka efter en kolumn på första raden bestående av 1234. Då har man sen bara problemet att lära sig VIM

Permalänk
Medlem

Regex var riktigt najs.
tack för all hjälp!

Permalänk
Hedersmedlem
Skrivet av perost:

Då har man sen bara problemet att lära sig VIM

Men vilket angenämt problem, sedan!

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Avstängd

@Bozzeta:

Har du testat det programmet som jag gjorde till dig?

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Medlem
Skrivet av superegg:

@Bozzeta:

Har du testat det programmet som jag gjorde till dig?

Fick aldrig igång visualstudio som vägras att intallera.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/18966e...

Permalänk
Avstängd
Skrivet av Bozzeta:

Fick aldrig igång visualstudio som vägras att intallera.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/18966e...

Ligger annans en exe file som är redan compiler eller vad den kallas.

"\bin\Debug"

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666