File size: 2,181 Bytes
7c3be27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# input_topic.py


# Input Design
# This script is designed to take user input for a topic or a keyword and validate it before using it in a news summarization application.

def get_topic():
    topic = input("Enter a topic to search for news articles: ")
    if not topic:
        print("No topic provided. Please enter a valid topic.")
        return None
    if len(topic) > 100:  # Arbitrary limit for topic length
        print("Topic is too long. Please enter a shorter topic.")
        return None 
    if not topic.isascii():
        print("Topic contains non-ASCII characters. Please use only ASCII characters.")
        return None
    if not topic.isprintable():
        print("Topic contains non-printable characters. Please use only printable characters.")
        return None
    if topic[0].isdigit():
        print("Topic should not start with a digit. Please enter a valid topic.")
        return None
    if topic[0] == ' ':
        print("Topic should not start with a space. Please enter a valid topic.")
        return None
    # Normalize the input to lowercase and strip any leading/trailing whitespace.
    topic = topic.lower().strip()
    # Check for special characters and replace them with spaces.
    special_chars = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', '{', '}', '[', ']', '|', ':', ';', '"', "'", '<', '>', ',', '.', '?', '/', '\\']
    for char in special_chars:
        topic = topic.replace(char, ' ')
    # Remove extra spaces
    topic = ' '.join(topic.split())
    # Check if the topic is empty after normalization
    if not topic:
        print("Topic is empty after normalization. Please enter a valid topic.")
        return None
    # Check for common stop words and remove them
    stop_words = ['the', 'is', 'in', 'and', 'to', 'a', 'of', 'for', 'on', 'with', 'as', 'by', 'this', 'that']
    topic_words = topic.split()
    topic = ' '.join([word for word in topic_words if word not in stop_words])
    # Check if the topic is empty after removing stop words
    if not topic:
        print("Topic is empty after removing stop words. Please enter a valid topic.")
        return None

    return topic