首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法检查和查看我的python字典中的某个键是否为大写,以及它是否附加了一些内容?

有没有办法检查和查看我的python字典中的某个键是否为大写,以及它是否附加了一些内容?
EN

Stack Overflow用户
提问于 2018-05-17 21:38:49
回答 2查看 177关注 0票数 1

因此,我正在尝试创建一个程序,它有一个字典,可以将字符串转换为1和0的盲文表示。我的问题是,当用户输入大写字母时,我不知道该怎么办。如果他们输入该字母,我想在其字母表示之前追加000001。就像Bob看起来像"000001110000101010110000“

这是我到目前为止所拥有的

代码语言:javascript
复制
myDict = {'a' : '100000','b': '110000','c': '100100','d': '100110','e': '100010','f': '110100','g': '110110','h':'110010','i': '010100','j':'010110','k': '101000','l': '111000','m':'101100','n': '101110','o': '101010','p': '111100','q': '111110','r': '111010','s':'011100', 't': '011110','u': '101001','v': '111001','w': '010111','x': '101101','y': '101111','z': '101011'}
def braille(string, brailleDict):
    return ''.join(brailleDict[char] for char in string)
print(braille('bob', myDict))
EN

回答 2

Stack Overflow用户

发布于 2018-05-17 21:43:43

更新你的字典

最好的方法是更新您的brailleDict以支持大写字母。然后,您的初始解决方案将会起作用。

不过,这允许您使用str.translate方法,这可以说是一个更好的解决方案。

代码语言:javascript
复制
brailleDict = {'a' : '100000', 'b': '110000', ...}

# Add the capital letter Braille representations to your dict
brailleDict.update({char.upper(): '000001' + code for char, code in brailleDict.items()})

# Create a translation dict to be used by `str.translate`
brailleTranslation = str.maketrans(brailleDict)

print('bob'.translate(brailleTranslation)) # '110000101010110000'
print('Bob'.translate(brailleTranslation)) # '000001110000101010110000'

缺点是str.translate将使它无法识别的字符保持不变。您可以使用str.isalpha检查您的字符串是否可翻译,如果不是,则引发一个ValueError,或者更新您的转换表,使其删除未知字符。

代码语言:javascript
复制
from collections import defaultdict

...

brailleTranslation = defaultdict(lambda: None, str.maketrans(brailleDict))

print('#bob'.translate(brailleTranslation)) # still prints '110000101010110000'

如果您使用所有盲文字符填充dict,则可以在上面的函数中检查s.isprintable()

使用str.upper

或者,您可以使用str.isupper检查字符串是否由大写字符组成。

代码语言:javascript
复制
brailleDict = {'a' : '100000', 'b': '110000', ...}

def braille(string):
    return ''.join(('000001' if char.isupper() else '')
                   + brailleDict[char.lower()] for char in string)

print(braille('bob')) # '110000101010110000'
print(braille('Bob')) # '000001110000101010110000'
票数 3
EN

Stack Overflow用户

发布于 2018-05-17 21:42:59

代码语言:javascript
复制
myDict = {'a' : '100000','b': '110000','c': '100100','d': '100110','e': '100010','f': '110100','g': '110110','h':'110010','i': '010100','j':'010110','k': '101000','l': '111000','m':'101100','n': '101110','o': '101010','p': '111100','q': '111110','r': '111010','s':'011100', 't': '011110','u': '101001','v': '111001','w': '010111','x': '101101','y': '101111','z': '101011'}
def braille(string, brailleDict):
    return ''.join("000001{0}".format(brailleDict[char.lower()]) if char.isupper() else brailleDict[char] for char in string)

print(braille('bob', myDict))
print(braille('Bob', myDict))

输出:

代码语言:javascript
复制
110000101010110000
000001110000101010110000

  • 使用str.isupper检查字母是否为大写
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50392926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档