我有一个家庭作业,我必须定义一个函数,询问用户一个段落并创建一个列表列表(ex [[x,y],[x1,y2],[x3,y3]),其中x =字符串中单词的指定长度,y =指定长度的单词的计数。 (例如[[1,2],[2,3],[4,4],[6,1]] ... 1是1个字母的单词,2是1个字母单词的计数,所以类推。)
这就是我目前的情况:
def wordCount():
words = []
wordCount_text_length = []
word_count = []
text = input('Please enter a paragaph of regular English text: \n')
words = (text.split())
for x in words:
wordCount_text_length.append(len(x))
for y in wordCount_text_length:
word_count.append(wordCount_text_length.count(y))
当我在控制台中运行并使用短语"我看到一只蓝鸟。"打印以下内容(变量供参考):
words = ['I', 'saw', 'a', 'blue', 'bird.']
wordCount_text_length = [1, 3, 1, 4, 4]
word_count = [2, 1, 2, 2, 2]
我被卡住了因为1.)它将标点符号作为字符串的一部分。 2.)如何创建一个循环来创建列表列表,该列表将采用单词长度/计数一次,然后继续下一个长度?
答案 0 :(得分:0)
您可以使用.isalpha()
过滤掉标点符号:
text = input('Please enter a paragaph of regular English text: \n').split()
new_text = [''.join(b for b in i if b.isalpha()) for i in text]
final_list = [[len(i), ''.join(new_text).count(i.lower())] for i in new_text]
使用&#34的输入;我看到一只蓝鸟。",最终输出是:
[[1, 1], [3, 1], [1, 2], [4, 1], [4, 1]]
您还可以使用字典来帮助可视化输出:
final_list = {i.lower():[len(i), ''.join(new_text).count(i.lower())] for i in new_text}
输出:
{'i': [1, 1], 'saw': [3, 1], 'a': [1, 2], 'blue': [4, 1], 'bird': [4, 1]}
答案 1 :(得分:0)
我使用了一个字典,然后在最后把它变成一个列表。我还使用.isalpha()检查了标点符号。如果您希望对最终列表进行排序,则在最后一行sorted(word_lengths.items())
。
words = input().split()
word_lengths = {}
puncs = [',', '.']
for word in words:
y = word
if not y.isalpha(): y = y[:-1]
length = len(y)
try: word_lengths[length] += 1
except KeyError: word_lengths[length] = 1
print([[k, v] for k, v in word_lengths.items()])