0

我正在寻找一个示例代码,它说:

subj = 'A.B!c?'
dd = {ord(c):None for c in 'chars_to_remove'}
subj.translate(dd) 

输出是“AB!?” . 在我看来 ord(c): 是一个“字典”,如果 string(subj) 中的每个元素都满足 c 那么 c 将被删除。

但是我无法全面了解此声明,我不明白:

  1. c 是指字符串的每个元素吗?
  2. “none for c”是什么意思?
  3. 如果我只是将“chars_to_remove”替换为“k”,那么输出将变为“AB!c?” , 为什么?

请帮我理清思路。谢谢。

4

2 回答 2

2

你应该把它读作ord(c): Nonepause for c in 'chars_to_remove

发生的情况是您在您的字典中插入字符串ord(c): None的每个字符。c'chars_to_remove'

于 2020-03-11T15:17:08.267 回答
1

你读错了

{ord(c):None for c in 'chars_to_remove'}

ord(c):Nonefor c in 'chars_to_remove'

for c in 'chars_to_remove'遍历此字符串 'chars_to_remove' 中的每个字符

ord(c):None当添加到字典并在 中使用时translate(),它将那些 char 替换为 None

这个字符串中唯一存在于您的主题中的字符是“c”,因此您的主题变成了“AB!?”

于 2020-03-11T15:17:45.273 回答