Cześć, ma tabelę składającą się z trzech kolumn: w pierwszej w każdym z wierszy znajduje się tekst, dwie kolejne są puste (etykiety pos i neg). Do tego mam dwie listy składające się z listy danych słów. Chciałbym dla każdego z wierszy policzyć liczbę wystąpień słów z dwóch list i zapisać wyniki w dwóch kolumnach (pos i neg).
Domyślam się, że trzeba przejść przez każdy z wierszy za pomocą iteratora i używając funkcji if sprawdzić występowanie słowa na liście. Zastanawiam się tylko, czy tekst w wierszu należy poddać tokenizacji. I druga kwestia, nie bardzo wiem w jaki sposób zapisać wynik w dodatkowej kolumnie.
Będę wdzięczny za pomoc
Zliczanie wystąpień wyrazów
- Rejestracja: dni
- Ostatnio: dni
- Postów: 25
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1028
Hmm, my tym bardziej nie wiemy w jaki sposób masz zapisać dane w drugiej kolumnie. Co to w ogóle za zadanie?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 34
Co do zliczania o ile dobrze rozumiem to mozna to zrobic uzywajac metody split() na stringu z tekstem i wykozystac to np w funkcji filter z yzyciem funkcji lambda
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Częstochowa
- Postów: 220
Najszybsze liczenie wyrazów (zakładając że są już rozdzielne) w pythonie, zrobisz za pomocą słowników:
slownik = {}
for wyraz in twoje_wyrazy:
slownik[wyraz] = slownik.get(wyraz, 0)+1
Ale z takiej opisówki niewiele wyniesiemy, wrzuć jakąś swoją próbę poskładania tego kodu, z czego bierzesz dane itd.
Oraz najważniejsze, jak wygląda ta tabela o której mowa. Nikt tu nie będzie czarował z fusów jak coś rozwiązać bez konkretnej informacji ;d
- Rejestracja: dni
- Ostatnio: dni
- Postów: 25
enedil napisał(a):
Hmm, my tym bardziej nie wiemy w jaki sposób masz zapisać dane w drugiej kolumnie. Co to w ogóle za zadanie?
Załóżmy, że w pierwszym wierszu mam następujące zdanie: "RPP rozczarowała inwestorów liczących na złagodzenie jej retoryki". Teraz chciałbym sprawdzić, czy któreś ze słów znajduje w zbiorze słów we wspomnianych listach. Jeśli np. słowa "rozczarowała" i "retoryki" znajdują się na pierwszej liście, to w kolumnie "pos" powinno pojawić się 2. Jeśli z kolei żadne ze słów nie znajduje się na drugiej liście, to w kolumnie "neg" powinno pojawić się 0.
Mam nadzieję, że trochę rozjaśniłem.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1
liczba znakow w lancuchu, liczba wyrazow w lancuchu i czy w lancuchu są cyfry)
def zbierz_informacje():
while True:
# Wprowadzenie tekstu przez użytkownika
wprowadzenie = input("Podaj tekst (wpisz 'koniec', aby zakończyć): ")
# Sprawdzenie, czy użytkownik chce zakończyć
if wprowadzenie.lower() == 'koniec':
break
# Obliczanie liczby znaków
licznik_znakow = len(wprowadzenie)
# Obliczanie liczby wyrazów
liczba_wyrazow = len(wprowadzenie.split())
# Sprawdzanie, czy w tekście są cyfry
czy_cyfry = any(ch.isdigit() for ch in wprowadzenie)
# Wyświetlenie wyników
print(f"Liczba znaków: {licznik_znakow}")
print(f"Liczba wyrazów: {liczba_wyrazow}")
print(f"Czy tekst zawiera cyfry? {'Tak' if czy_cyfry else 'Nie'}")
print() # Pusta linia dla lepszej czytelności
Uruchomienie programu
if name == "main":
zbierz_informacje()
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5025
czy tekst w wierszu należy poddać tokenizacji
Jeśli się nad tym zastanawiasz to źle, musisz miec jakąś strategię jak przygotować oba teksty.