• Geek_f8cd05
    2023-01-02 来自广东
    老师,YOU和you的个数也不对,分隔后有些带了逗号,[ 之类的,就没有count出来

    作者回复: 这时候最精确的统计办法是用正则表达式,把原始字符串过滤一遍, 将字母外的特殊字符给替换为空

    共 2 条评论
    2
  • 木 乐
    2023-06-19 来自广东
    老师,在哪里找得到“24-demo.text”这个文件呢?

    作者回复: https://github.com/wilsonyin123/python_productivity 对应每一课的代码,也可以通过第一课下的链接下载全部代码和演示文本

    
    1
  • 张驰皓
    2023-09-07 来自北京
    好奇 set 函数处理后的数据是怎么样的(空行是多处重复的内容,去重后空行会被放在哪个位置呢),就赋值打印出来了,然后发现空行会被放在内容的第一行、后面再跟着其他未被去重的内容,还挺有趣

    作者回复: set 的内部实现是基于散列表 (hash table) 的。因此,集合中元素的顺序并不是它们被添加时的顺序,而是基于它们的哈希值。简而言之,当你向集合中添加一个元素时,Python 会计算该元素的哈希值并使用这个哈希值来决定它在集合中的位置。 空字符串的哈希值是确定的,并且当你在一个集合中有多个空字符串时,它们的哈希值都是相同的。所以,当你将它们添加到集合中时,只有一个会被保留。

    
    
  • Leaf
    2023-07-27 来自浙江
    老师,我想问一下,这个24-demo.txt的文件是直接在venv文件夹下重新建立一个文件,还是需要用代码在pycharm建立

    作者回复: Pycharm下建立。venv里应当只包含Python虚拟环境的内容(Python相关程序python、pip、jupyter等,虚拟环境下下载到本地的python第三方库)

    
    
  • Geek_219b52
    2023-07-22 来自浙江
    老师,帮我看一下下面的问题,统计is出现的次数是3次是正确的,但是统计my出现的次数返回0 #文件信息如下: ['what is you name?\n', '\n', 'my name is test1!\n', '\n', 'what about you?\n', '\n', 'my name is test2!\n', '\n', 'hei,boy\n', '\n', 'SEE YOU'] #统计my出现的次数 print(str(file_data).split(' ').count("my")) 在vscode执行,显示my出现的次数是0次,这个结果不正确 #统计is出现的次数 print(str(file_data).split(' ').count("is")) 在vscode执行,显示is出现的次数是3次,这个结果是正确的

    作者回复: 你的代码中统计 "my" 出现次数的问题在于你是如何处理字符串的。当你使用 `split(' ')` 方法时,它会根据空格进行分割,但这样分割的结果可能会包含换行符、标点符号等。 在你给出的文件信息中,"my" 后面紧跟着一个空格和换行符,因此 `split(' ')` 之后,"my" 的实际内容变成了 `"my\n"`,所以 `.count("my")` 返回了0。 你可以通过以下方式修正代码: 1. **使用正则表达式进行分割**:这样可以更精确地控制分割的行为。 2. **在分割后移除非字母字符**:你可以使用 `strip()` 方法移除每个单词的首尾非字母字符。 以下是一个修改后的代码示例: ```python import re file_data = ['what is you name?\n', '\n', 'my name is test1!\n', '\n', 'what about you?\n', '\n', 'my name is test2!\n', '\n', 'hei,boy\n', '\n', 'SEE YOU'] text = " ".join(file_data) words = re.findall(r'\b\w+\b', text) # 统计my出现的次数 print(words.count("my")) # 输出2 # 统计is出现的次数 print(words.count("is")) # 输出3 ``` 这个代码使用了正则表达式 `\b\w+\b` 来分割文本,这样可以确保只得到完整的单词。结果是 "my" 出现了2次,"is" 出现了3次。

    
    
  • Guan YD
    2023-07-18 来自陕西
    老师 我试了一下自己创建一个list来进行统计 ass = ["1 2 3 4 5 6","a s d d d d d"] print(str(ass).count("d")) #5 print(str(ass).split(" ").count("d")) #4 为啥一个是5,一个是4呢,确实是有5个

    作者回复: 你所遇到的问题与字符串分割和统计的方式有关。让我们分析一下你的代码。 ### 代码分析 1. `str(ass).count("d")`:这一行统计的是整个列表转换为字符串后 `"d"` 字符的出现次数。确实有5个 `"d"`,所以输出为5。 2. `str(ass).split(" ").count("d")`:这一行首先将整个列表转换为字符串,然后使用空格 (`" "`) 进行分割。分割后的列表为: ```python ['["1', '2', '3', '4', '5', '6","a', 's', 'd', 'd', 'd', 'd', 'd"]'] ``` 在这个列表中,`"d"` 出现了4次,所以输出为4。 ### 为什么会有这个差异? 问题在于 `str(ass).split(" ")` 使用空格作为分隔符,而列表转换为字符串后包含许多其他字符,例如引号和逗号。这导致分割后的结果并不是单纯的单词和字符,而是包括了这些额外的字符。 ### 解决方案 如果你想统计原始字符串中 `"d"` 的出现次数,你可以首先将字符串连接起来,然后统计 `"d"` 的出现次数,如下所示: ```python ass = ["1 2 3 4 5 6", "a s d d d d d"] text = " ".join(ass) print(text.count("d")) # 输出5 ``` 这样你将得到与原始字符串中 `"d"` 的实际出现次数相符的结果。

    
    
  • Geek_c98a70
    2023-06-04 来自上海
    老师,我用mac自定义一个文档,但是用readline方法我只能读到第一行

    作者回复: User Avatar 在Python中,使用`readline()`方法确实只能读取文件的一行。如果你想要读取整个文件的内容,可以使用`readlines()`方法或者遍历文件对象来逐行读取整个文件。 以下是两种读取整个文件内容的方法: 1. 使用`readlines()`方法: with open("文件路径", "r") as file: lines = file.readlines() for line in lines: # 对读取的每一行进行处理 print(line.strip()) 上述代码中,`readlines()`方法用于读取所有行,并将它们存储在列表`lines`中。然后,你可以遍历该列表来处理每一行。 2. 遍历文件对象: with open("文件路径", "r") as file: for line in file: # 对读取的每一行进行处理 print(line.strip()) 在这种方法中,直接遍历文件对象,每次迭代会读取文件的下一行,并将其存储在变量`line`中。你可以在循环中对每一行进行处理。 请确保将代码中的"文件路径"替换为你实际文件的路径。 希望以上方法能够帮助你读取完整的文件内容。如果还有其他问题,请随时提问。

    
    
  • Yuyy🐼
    2023-01-15 来自北京
    为什么统计I出现的次数是把其先转换为str,而统计you和You的时候是转换为int

    作者回复: 统计字符时,要保证时字符串,才能使用字符串内置方法,所以将它们统统转成了字符串, 而转换成int是对统计之后的数字做的处理。 统计之后虽然显示为数字,也可能为“123” 这样的形式, 在Python里面“123” 和123 前者只能使用字符串内置方法, 后者只能使用整数内置方法。我是为了计算,才将“123”使用int()函数转换为整数,用于做计算的。如果还有问题,可以群里将代码贴出来,我们详细讨论

    共 2 条评论
    
  • 🌺骄阳似我🌺
    2023-06-05 来自北京
    以空格分隔后,会有"'I"开头的字符串,print(str(data).split(' ').count('I') + str(data).split(' ').count("'I") + str(data).split(' ').count("I'")),这样统计完是23个
    
    1
  • Geek_a967ff
    2022-11-29 来自中国台湾
    24-demo.txt中的"I",应该是23个
    
    1