这个程序为什么没有运行结果:import retext = input("请输入一段英文文字:")words = re.findall(r'\b\w+\b', text) # 使用正则表达式提取单词word_count = {}for word in words: if word not in word_count: word_count[word] = 1 else: word_count[word] += 1# 按字典序排序并输出出现次数大于2的单词及其出现次数sorted_words = sorted([word for word in word_count if word_count[word] > 2])for word in sorted_words: print(word, word_count[word])# 按出现次数排序并输出出现次数大于2的单词及其出现次数sorted_words = sorted(word_count, key=lambda x: (-word_count[x], x))for word in sorted_words: if word_count[word] > 2: print(word, word_count[word])
时间: 2023-05-18 22:05:33 浏览: 97
这个程序没有运行结果可能是因为代码中有错误。具体来说,正则表达式中的模式可能不正确,导致无法匹配到任何单词。此外,输入的英文文字也可能不符合要求,例如没有任何单词或者包含非英文字符。如果想要确定问题所在,可以尝试打印出中间结果,或者使用调试工具进行排查。
相关问题
优化这段代码 import retext = input("请输入一段英文文字:")words = re.findall(r'\b\w+\b', text) # 使用正则表达式提取单词word_count = {}for word in words: if word not in word_count: word_count[word] = 1 else: word_count[word] += 1# 按字典序排序并输出出现次数大于2的单词及其出现次数sorted_words = sorted([word for word in word_count if word_count[word] > 2])for word in sorted_words: print(word, word_count[word])# 按出现次数排序并输出出现次数大于2的单词及其出现次数sorted_words = sorted(word_count, key=lambda x: (-word_count[x], x))for word in sorted_words: if word_count[word] > 2: print(word, word_count[word])
优化后的代码如下:
import re
text = input("请输入一段英文文字:")
words = re.findall(r'\b\w+\b', text)
优化的地方在于正则表达式中的 \w 后面加上了 +,表示匹配一个或多个字母数字字符。这样可以避免原代码中出现的问题,即只匹配单个字母或数字。同时,也可以去掉正则表达式中的空格,使得匹配更加准确。
import retext = '''<tr>...</tr><tr class="new"><td>2023058</td> <td></td> <td>16</td> <td>31</td> <td>16</td> <td>15</td> <td>06</td> <td>15</td> <td>15</td> <td>05</td> <td>25</td> <td>15</td> <td></td></tr><tr>...</tr>'''pattern = re.compile(r'(?<=<tr class="new">)[\d\s]+(?=<\/tr>)')matches = pattern.findall(text)for match in matches: numbers = re.findall(r'\d+', match) print(numbers) 没有匹配到里面的数字
可能是因为你在正则表达式中没有考虑到空格。在HTML中,数字和空格之间可能有多个空格或其他空白字符。你可以使用\s+来匹配一个或多个空白字符。以下是修改后的代码:
```
import re
text = '''<tr>...</tr><tr class="new"><td>2023058</td> <td></td> <td>16</td> <td>31</td> <td>16</td> <td>15</td> <td>06</td> <td>15</td> <td>15</td> <td>05</td> <td>25</td> <td>15</td> <td></td></tr><tr>...</tr>'''
pattern = re.compile(r'(?<=<tr class="new">)\s*[\d\s]+\s*(?=<\/tr>)')
matches = pattern.findall(text)
for match in matches:
numbers = re.findall(r'\d+', match)
print(numbers)
```
这个正则表达式使用了\s*来匹配0个或多个空白字符。这样就可以正确地匹配数字和空格之间的任何空白字符。
阅读全文