【问题标题】:How to get all capitalizations of a word?如何获取单词的所有大写字母?
【发布时间】:2014-09-18 15:00:44
【问题描述】:

一段时间以来,我一直在尝试想象一种在 Python 中生成单词所有可能大写形式的方法。例如:

hello
Hello
HEllo
...
heLLo
...
HeLlO

我发现了一些适用于大写的内置函数(例如.capitalize()),但它们似乎解决了典型案例(简单句子、参考书目)。我将不胜感激关于在哪里查看我想到的 for 循环的提示,以及递归不是解决方案(我不会在这里提及它们,它们太错误了)


澄清:由于有 5 到 9 人(通过搁置、否决和 cmets)需要澄清,我将尝试使用不同的词来澄清。

我有一个由 a 到 z 的字符组成的字符串(后来称为 word)。我想在 Python 中获取所述单词的列表,但以所有可能的方式大写(即大写字母(如M)和小写字母(像f)。这会导致一个类似于上面的列表(带有单词 hello的变体。

我很高兴我没有问如何将两个数字相乘,我需要通过代数环速成课程来澄清。

【问题讨论】:

  • 这个问题解决了哪些现实问题?
  • 这闻起来像XY problem。你想做什么? -- 你的最终目标是什么,OP?
  • 不确定我的问题有什么不清楚的地方:有一个词,我想有一个算法来获取这个词的所有大写字母的列表。在 Python 中。现实生活中的问题是我想得到那个列表(因为我需要它来处理与问题完全无关的事情)。我很乐意澄清,但我不知道在这里进一步澄清什么。
  • 单词中字母数量的2次方?
  • @Wolf:好的好的,非常感谢。我更正了错字,这对某些人来说显然是太大的障碍。

标签: python string capitalization


【解决方案1】:

使用itertools.product

import itertools
for chars in itertools.product('hH', 'eE', 'lL', 'lL', 'oO'):
    print(''.join(chars))

word = 'hello'
for chars in itertools.product(*zip(word, word.upper())):
    print(''.join(chars))

输出:

hello
hellO
helLo
helLO
heLlo
heLlO
heLLo
heLLO
...

【讨论】:

  • +1,我唯一要补充的是,这可以写成带有列表理解的单行:[''.join(l) for l in itertools.product('hH','eE', 'lL', 'lL', 'oO')]
【解决方案2】:

当重新解释问题的get时,它也可能意味着:

如何评估来自 Shift 键损坏的键盘 的输入(假设大小写无关紧要)?

那么,我可能会试试这个

import re

m = re.match(user_input, "hello", re.IGNORECASE);

...或者只是这个

user_input.lower() == "hello"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2017-06-20
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多