python - 返回所有单个字母的集合,而不是每个单词的集合
问题描述
当我有以下代码时,我不明白为什么我会收到每封信的一套;但是,当我简单地删除 'abcdefghijklmnopqrstuvwxyz ':''' 中的 '''if 单词时,我会收到每个短语的集合。但是,我需要一些可以删除任何不是空格的东西(即 / [ ] - 等,从较大的段落中,所以 abcd 是我能想到的最好的)。
两个后续问题:
- 似乎如果我使用 return 与 print,我会收到两个不同的答案(return 只返回最后一组;其中 print 返回所有组)。
- 而不是让它成为 5 个单独的集合,我如何将它放入 5 个集合的列表中?
def make_itemsets(words):
words = str(words)
words.lower().split()
for word in words:
newset = set()
if word in 'abcdefghijklmnopqrstuvwxyz ':
newset.update(word)
print(newset)
words = ['sed', 'ut', 'perspiciatis', 'unde', 'omnis']
make_itemsets(words)
这将返回五个列表(但不会删除所有多余的,也不会从较大的段落中删除非字符):
def make_itemsets(words):
words = str(words)
words.lower().split()
for word in words:
newset = set()
newset.update(word)
print(newset)
这将是预期的输出:
[{'d', 'e', 's'},
{'t', 'u'},
{'a', 'c', 'e', 'i', 'p', 'r', 's', 't'},
{'d', 'e', 'n', 'u'},
{'i', 'm', 'n', 'o', 's'}]
解决方案
您可以像这样获得预期的输出:
print ( [set(w) for w in words] )
输出是:
[{'d', 's', 'e'}, {'u', 't'}, {'p', 'e', 'i', 'a', 'c', 'r', 's', 't'}, {'d', 'u', 'e', 'n'}, {'m', 'i', 'o', 's', 'n'}]
请注意,集合没有顺序。
如果您想要仅是字母字符的单词,您可以这样做:
print ( [set(w) for w in words if w.isalpha()] )
推荐阅读
- android - 如何在android中的水平条形图中显示可用和不可用的插槽
- amazon-web-services - 具有符合 CNAME 的虚拟名称的 AWS S3 url
- bash - 引号内的 bash 字符串格式
- node.js - Discord 音乐机器人 - 跳过歌曲的问题
- python - 滚动条不移动但内容不移动
- autohotkey - 为什么 Shift + Numlock 不起作用,即使有 +NumLock::NumLock?
- java - Jpa + Spring Boot 实体过滤器
- python - 是否可以在 excel 中编辑 Y 轴值?
- javascript - 使用 JQuery 动态重复和删除表单元素
- javascript - 使用编码语言的 RDP 连接