печать подсчета дубликатов в таблице - PullRequest
0 голосов
/ 15 октября 2019

Я хочу посчитать дубликат и распечатать его в таблице,

, но таблица повторяется. Как я могу решить это назначение

это мой код

dummyString = "kamu makan makan jika saya dan dia??"
lists = []

def message(userInput):
    punctuation = "!@#$%^&*()_+<>?:.,;/"
    words = userInput.lower().split()
    conjunction = file.read().split("\n")
    removePunc = [char.strip(punctuation) for char in words if char not in conjunction]
    global lists
    lists = removePunc
    return removePunc

def counting(words):
    already_checked = []
    for char in words:
    # Do not repeat the words
        if char not in already_checked:
        # Check all the indices of the word in the list
            indices = [key for key, value in enumerate(words) if value == char]
            countsDuplicate = len(indices)
            table(lists, countsDuplicate)
        already_checked.append(char)

    return indices

def table(allWords, counts):
    print("Distribusi Frekuensi Kata: ")
    print("-"*70)
    print("{:>0s} {:<15s} {:<15s}".format("No","Kata","Frekuensi"))
    print("-"*70)
    words = set(allWords)
    count = 1
    for word in words:
        print("{:>0s} {:<20s} {:<10s}".format(str(count), word, str(counts)))
        count += 1

Я хочу вывод, как это, но таблица повторяется много раз

----------------------------------------------------------------------
No Kata            Frekuensi
----------------------------------------------------------------------
1 makan                2
2 dia                  1
3 kamu                 1
4 saya                 1

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

при условии, что ваш список слов уже очищен, например,

words = "kamu makan makan jika saya dan dia??"
punctuation = "!@#$%^&*()_+<>?:.,;/"
for p in punctuation:
    if p in words:
        words = words.replace(p, '', words.count(p))
words = words.split()

вы можете использовать set в сочетании с .count и sorted, чтобы получить распечатку слова и обилие по убываниюзаказ:

w_unq = sorted(((item, words.count(item)) for item in set(words)), key=lambda x: x[1], reverse=True)
print('No.\tWord\tAbundance')
for i, u in enumerate(w_unq):
    print('{}\t{}\t{}'.format(i+1, *u))

дает вам

No.     Word    Abundance
1       makan   2
2       saya    1
3       dan     1
4       dia     1
5       jika    1
6       kamu    1
0 голосов
/ 15 октября 2019

Что я сделал, так это удалил знаки препинания из dummyString, нашел количество слов и отобразил их в кадре данных.

Код ниже должен работать для вас:

import string
import pandas as pd
from collections import Counter

dummyString = "kamu makan makan jika saya dan dia??"
dummyString_new=dummyString.translate(str.maketrans('', '', string.punctuation))

words = dummyString_new.split()
wordCount = Counter(words)

df = pd.DataFrame.from_dict(wordCount, orient='index').reset_index()
df.columns=['No Kata','Frekuensi']
df.index += 1                         # to start your index from 1 and not 0.

Вывод:

df:

    No Kata Frekuensi
1   kamu       1
2   makan      2
3   jika       1
4   saya       1
5   dan        1
6   dia        1
...