• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Jak pociąć string?

Object Storage Arubacloud
0 głosów
278 wizyt
pytanie zadane 24 sierpnia 2022 w Python przez Hajpa Użytkownik (880 p.)
zamknięte 25 sierpnia 2022 przez Hajpa
Cześć!

Ponoć nie ma głupich pytań, ale...

Mam plik tekstowy, który zawiera kilkaset linii tekstu w formacie:

2022-03-13<tab>12354
2022-01-15<tab>+331
 

itd.

 

<tab> oznacza klawisz tabulatora. Jest to "przeklejka" z arkusza Excel do Notatnika.

Interesują mnie liczby po znaku tabulatora. Liczby te mają różną ilość cyfr i czasem znak "+" i "minus" na początku.

Liczby te chciałbym zapisać w nowym pliku txt w formacie:

12354

+331

itd.

Jest na to jakiś prosty sposób?

 

Domyślam się, że mam odczytać linię z pliku, usunąć ze stringa od lewej do znaku tab i resztę zapisać. Dobrze kombinuję?

 

pozdrawiam

---------

Rozwiązanie:

file = open("data.txt", "r")

for line in file:

    print (line[20:])

file.close()

 

Dzięki, pozdrawiam.
komentarz zamknięcia: Definitywny koniec :)
1
komentarz 24 sierpnia 2022 przez rafal.budzis Szeryf (85,260 p.)
Dobrze myślisz:) Ja lubię używać funkcji do dzielenia textu po znaku ( w javascript split). Przekazujesz jaki Znak ma być separatorem i dostajesz tablice stringów rozdzieloną po tym znaku. Wtedy możesz sobie wczytać całość zrobić splita po znaku nowej lini i bedziesz miał już lablice z linijkami. Następnie lecisz w pętli i tam robisz splita po znaku tab i pobierasz sobie drugi indeks z tablicy stringów. W mojej ocenie ułatwia to zrozumienie kodu i zmniejsza jego ilość ale to pewnie kwestia gustu.
komentarz 24 sierpnia 2022 przez Velta Maniak (52,010 p.)

Próbowałbym rozdzieleniem na tablicę:

def get_number_value(input_row):
    return input_row.split('\t')[1]

Albo wyrażeniem regularnym:

def get_number_value(input_row):
    return re.search("\d{4}-\d{2}-\d{2}\t([+-]?\d+)", input_row).group(1)

Pewnie można szybciej/lepiej. ;p

3 odpowiedzi

+1 głos
odpowiedź 24 sierpnia 2022 przez SzkolnyAdmin Szeryf (86,360 p.)
edycja 26 sierpnia 2022 przez SzkolnyAdmin

Wystarczy ci sam Notepad++. Menu Szukaj -> Zamień (lub Ctrl+H). Zaznacz Wyrażenia regularne. Jako Szukany tekst wpisz

[0-9]{4}-[0-9]{2}-[0-9]{2}\t

lub też

\d{4}-\d{2}-\d{2}\t

co oznacza 4 cyfry, myślnik, 2 cyfry, myślnik, dwie cyfry, znak tabulacji.

Jako Zamień na nic nie wpisuj i prawie gotowe. Dostaniesz liczby znajdujące się po tabulatorze. Teraz usuń jeszcze plusy (zwyczajna zamiana) i koniec.

komentarz 24 sierpnia 2022 przez Wiciorny Ekspert (269,790 p.)

Grześki DZIEL NA 6 Kakaowe  Mnie bawi. 

1
komentarz 26 sierpnia 2022 przez SzkolnyAdmin Szeryf (86,360 p.)
Odkodowałem, zachęcony - chrupnąłem. Ale co to ma do pytania? Plik był najprawdopodobniej w czystym kodowaniu ASCII i odpowiedzi było do tego przystosowane. Pytający dostał paletę rozwiązań i może sobie wybrać, co mu pasuje.
0 głosów
odpowiedź 24 sierpnia 2022 przez VBService Ekspert (253,300 p.)
edycja 24 sierpnia 2022 przez VBService

Możesz użyć split i ujemny indeks

przykład  [ on-line ]

a = ['2022-03-13<tab>12354', '2022-01-15<tab>+331', '2022-01-15<tab>-33123']
for b in a:
    print(b.split('<tab>')[-1])

print()
    
a = ['2022-03-13    12354', '2022-01-15     +331', '2022-01-15    -33123']
for b in a:
    print(b.split()[-1])  

 

lub rfind

przykład  [ on-line ]

a = ['2022-03-13<tab>12354', '2022-01-15<tab>+331', '2022-01-15<tab>-33123']
for b in a:
    print(b[b.rfind('<tab>') + len('<tab>'):])

 

0 głosów
odpowiedź 25 sierpnia 2022 przez mokrowski Mędrzec (155,460 p.)

Jeśli dane są w data.txt, to: 

awk '{print $2}' data.txt

i już :) 

Podobne pytania

0 głosów
1 odpowiedź 929 wizyt
pytanie zadane 10 marca 2021 w Python przez qwert 100 Obywatel (1,250 p.)
+1 głos
1 odpowiedź 268 wizyt
pytanie zadane 13 września 2020 w Python przez TeaCup Obywatel (1,370 p.)
0 głosów
3 odpowiedzi 308 wizyt
pytanie zadane 8 maja 2020 w Python przez TeaCup Obywatel (1,370 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...