【数据科学导论】实验六:字符串与字典

简介: 【数据科学导论】实验六:字符串与字典

字符串与字典

0 下面的字符串的长度是多少?(共25分)

对于下面五个字符串中的每一个,预测传递该字符串时 len() 将返回什么。 使用变量 length 记录你的答案,然后运行单元格检查你是否正确。

0a.(5分)

a = ""
length = 0

0b.(5分)

b = "it's ok"
length = 7

0c.(5分)

c = 'it\'s ok'
length = 7

0d.(5分)

d = """hey"""
length = 3

0e.(5分)

e = '\n'
length = 1

1.(25分)

有一种说法是“数据科学家花费 80% 的时间清理数据,而他们的 20% 的时间都在抱怨清理数据”。 让我们看看您是否可以编写一个函数来帮助清理中国邮政编码数据。给定一个字符串,它应该返回该字符串是否代表有效的邮政编码。 就我们的目的而言,有效的邮政编码是由 6 位数字组成的任何字符串。

提示:str 有一个在这里很有用的方法(str.isdigit)。 使用 help(str) 查看字符串方法列表。

def is_valid_zip(zip_code):
    """Returns whether the input string is a valid (6 digit) zip code
    Example:
    SZ_ZIP = "215000"
    >>> is_valid_zip(SZ_ZIP)
    >>> Ture
    """
    return len(zip_code) == 6 and zip_code.isdigit()

测试

is_valid_zip('215000')
True

2.(25分)

一位研究人员收集了数以千计的新闻文章。 但她想将注意力集中在包含特定词的文章上。 完成以下功能以帮助她过滤文章列表。

您的函数应满足以下条件:

不要包含关键字字符串仅作为较大单词的一部分出现的文档。 例如,如果她要查找关键字“closed”,您就不会包含字符串“enclosed”。


她不想让你区分大写和小写字母。 所以这句话“Closed the case”。 当关键字为“closed”时将包含在内


不要让句号或逗号影响匹配的内容。 “It is closed.” 当关键字为“closed”时将包含在内。 但是您可以假设没有其他类型的标点符号。

def word_search(doc_list, keyword):
    """
    Takes a list of documents (each document is a string) and a keyword. 
    Returns list of the index values into the original list for all documents 
    containing the keyword.
    Example:
    doc_list = ["The Learn Python Challenge Casino.", "They bought a car", "Casinoville"]
    >>> word_search(doc_list, 'casino')
    >>> [0]
    """
    # 保存匹配文档索引的列表
    indices = [] 
    # 遍历文档的索引 (i) 和元素 (doc)
    for i, doc in enumerate(doc_list):
        # 将字符串 doc 拆分为单词列表(根据空格)
        tokens = doc.split()
        # 制作一个转换列表,我们在其中“标准化”每个单词以促进匹配。
        # 从每个单词的末尾删除句号和逗号,并将其设置为全部小写。
        normalized = [token.rstrip('.,').lower() for token in tokens]
        # 有匹配的吗? 如果有,则更新匹配索引列表。
        if keyword.lower() in normalized:
            indices.append(i)
    return indices

测试

doc_list = ["The Learn Python Challenge Casino.", "They bought a car", "Casinoville"]
word_search(doc_list, 'casino')
[0]

3.(25分)

现在研究人员想要提供多个关键字进行搜索。 完成下面的功能来帮助她。

(鼓励您在实现此函数时使用您刚刚编写的 word_search 函数。以这种方式重用代码可以使您的程序更加健壮和可读 - 并且可以节省输入!)

def multi_word_search(doc_list, keywords):
    """
    Takes list of documents (each document is a string) and a list of keywords.  
    Returns a dictionary where each key is a keyword, and the value is a list of indices
    (from doc_list) of the documents containing that keyword
    >>> doc_list = ["The Learn Python Challenge Casino.", "They bought a car and a casino", "Casinoville"]
    >>> keywords = ['casino', 'they']
    >>> multi_word_search(doc_list, keywords)
    {'casino': [0, 1], 'they': [1]}
    """
    keyword_to_indices = {}
    for keyword in keywords:
        keyword_to_indices[keyword] = word_search(doc_list, keyword)
    return keyword_to_indices

测试

doc_list = ["The Learn Python Challenge Casino.", "They bought a car and a casino", "Casinoville"]
keywords = ['casino', 'they']
multi_word_search(doc_list, keywords)
{'casino': [0, 1], 'they': [1]}


目录
相关文章
|
存储 索引
【数据科学导论】实验四:列表
【数据科学导论】实验四:列表
48 0
|
索引 Python
【数据科学导论】实验五:循环
【数据科学导论】实验五:循环
60 0
|
数据采集 机器学习/深度学习 BI
【数据科学导论】实验七:数据探索与数据预处理
【数据科学导论】实验七:数据探索与数据预处理
163 1
|
Python
【数据科学导论】实验一:语法、变量和数据类型
【数据科学导论】实验一:语法、变量和数据类型
99 0
|
Serverless Python
【数据科学导论】实验二:函数调用
【数据科学导论】实验二:函数调用
39 0
|
SQL
R数据科学|第九章内容介绍
在实际应用中,我们常会涉及到多个数据表,必须综合使用它们才能找到关键信息。存在于多个表中的这种数据统称为关系数据。本章中的很多概念都和SQL中的相似,只是在dplyr中的表达形式略微不同。一般来说,dplyr 要比 SQL 更容易使用
153 0
R数据科学|第九章内容介绍
R数据科学|第十章内容介绍(二)
本章通过学习字符串的处理,再结合正则表达式进行正确的模式匹配。
313 0
R数据科学|第十章内容介绍(二)
R数据科学|第十一章内容介绍
因子在 R 中用于处理分类变量。从历史上看,因子远比字符串更容易处理。因此,R 基础包中的很多函数都自动将字符串转换为因子。
181 0
R数据科学|第十一章内容介绍
|
数据采集 容器
R数据科学|5.4内容介绍及习题解答
R数据科学|5.4内容介绍及习题解答
300 0
R数据科学|5.4内容介绍及习题解答
R数据科学|第十章内容介绍(一)
本章通过学习字符串的处理,再结合正则表达式进行正确的模式匹配。
132 0