140k views
2 votes
Write a program that first reads in the name of an input file and then reads the file using the csv.reader() method. The file contains a list of words separated by commas. Your program should output the words and their frequencies (the number of times each word appears in the file) without any duplicates.

User Pencroff
by
3.1k points

2 Answers

6 votes

Answer:

Here is the Python code.

import csv

inputfile = input("Enter name of the file: ")

count = {}

with open(inputfile, 'r') as csvfile:

csvfile = csv.reader(csvfile)

for line in csvfile:

for words in line:

if words not in count.keys():

count[words] = 1

else:

count[words] + 1

print(count)

Step-by-step explanation:

I will explain the code line by line.

import csv here the css is imported in order to read the file using csv.reader() method

inputfile = input("Enter name of the file: ") This statement takes the name of the input file from the user

count = {} this is basically a dictionary which will store the words in the file and the number of times each word appears in the file.

with open(inputfile, 'r') as csvfile: This statement opens the inputfile using open() method in read mode. This basically opens the input file as csv type

csvfile = csv.reader(csvfile) This statement uses csv.reader() method to read the csv file contents.

for line in csvfile: This outer for loop iterates through each line of the file

for words in line: This inner loop iterates through each word in the line

if words not in count.keys(): This if condition checks if the word is not in the dictionary already. The dictionary holds key value pair and keys() method returns a list of all the keys of dictionary

count[words] = 1 if the word is not present already then assign 1 to the count dictionary

co unt[words] + 1 if the word is already present in dictionary increment count of the words by 1. Suppose the input file contains the following words:

hello,cat,man,hey,dog,boy,Hello,man,cat,woman,dog,Cat,hey,boy

Then because of co unt[words] + 1 statement if the word appears more than once in the file, then it will not be counted. So the output will be:

{' cat': 1, ' man': 1, ' dog': 1, ' woman': 1, ' Hello': 1, ' hey': 1, ' boy': 1, 'hello': 1, ' Cat': 1}

But if you want the program to count those words also in the file that appear more than once, then change this co unt[words] + 1 statement to:

count[words] = count[words] + 1

So if the word is already present in the file its frequency is increased by 1 by incrementing 1 to the count[words]. This will produce the following output:

{' Cat': 1, ' cat': 2, ' boy': 2, ' woman': 1, ' dog': 2, ' hey': 2, ' man': 2, ' Hello': 1, 'hello': 1}

You can see that cat, boy, dog and hey appear twice in the file.

print(count) This statement prints the dictionary contents with words and their frequencies.

The program with its output is attached.

Write a program that first reads in the name of an input file and then reads the file-example-1
Write a program that first reads in the name of an input file and then reads the file-example-2
User Lakmal Caldera
by
2.8k points
3 votes

This is a Python program that reads a file, counts word frequencies, and prints them without duplicates:

python

from collections import Counter

def word_frequencies(filename):

"""

Reads a file containing words separated by commas and prints their frequencies without duplicates.

Args:

filename: The name of the input file.

"""

# Read the file using csv.reader()

with open(filename, 'r') as f:

reader = csv.reader(f)

words = [word for row in reader for word in row.split(',')]

# Count word frequencies

word_counts = Counter(words)

# Print the frequencies without duplicates

for word, count in word_counts.items():

print(f"{word}: {count}")

User Luminger
by
3.7k points