我正在尝试使用例如“ 'workbook' 所以结果应该是这样的:工作,工作簿,书籍,书籍,弓,行等如何检查字符串中的字词,即使订单不同 - PYTHON
这是我试过的一种方法,但是这不会找到拼写顺序不同的单词。 (例如,它不会追加“弓”,即使你能重新“工作簿”中的字母写的“弓形”)
f = open('/usr/share/dict/words', 'r')
test = "workbook"
anagramlist = []
for word in f:
if word[:-1] in test and len(word[:-1]) > 2:
anagramlist.append(word[:-1])
# this wont append 'bookwork', 'row' etc
print anagramlist #outputs ['boo', 'book', 'work', 'workbook']
另一种方法我试过处理这个问题是使用套。但是这并未”牛逼的工作完全是因为它附加,对于例如有话超过1“W就像‘哇’或‘wowwow’,尽管我希望它只能使用字母和字母的数量‘工作簿’
f = open('/usr/share/dict/words', 'r')
test = "workbook"
anagramlist = []
for word in f:
if len(word) > 2 and set(word[:-1]) == set(test) & set(word[:-1]):
anagramlist.append(word[:-1])
print anagramlist
这一个的输出是。我希望我能够解决这个问题,或者这是一个完全错误的方法。
['bo', 'bob', 'bobo', 'boo', 'boob', 'boobook', 'book', 'bookwork', 'boor', 'bor', 'boro', 'borrow', 'bow', 'bowk', 'bowwow', 'brob', 'broo', 'brook', 'brow', 'ko', 'kob', 'koko', 'kor', 'or', 'orb', 'ow', 'owk', 'rob', 'rook', 'row', 'wo', 'wob', 'woo', 'work', 'workbook', 'wow', 'wro']
我真的很感谢你的帮助。
我觉得你的问题是因为它是现在,因为你正在寻找替代方法代表过于宽泛。不过,你可能会尝试一些事情。首先,查看['itertools.permutations'](https://docs.python.org/2/library/itertools.html#itertools.permutations)之类的内容,以创建可能的输入字符串重新排列。然后将这些与你的词典(而不是其他方式)进行比较,找出哪些是“真正的单词”.HTH。 –