我有以下功能,但它没有给我预期的结果:
def GetNthLetters(text,n):
builtstring=""
for letter in text:
if text.index(letter)%n==0:
builtstring=builtstring+letter
print letter
return builtstring
最佳答案
str.index()
为您的字母找到第一个匹配项。如果你有一个字母出现不止一次,那会给你错误的索引。对于任何给定字符,您只需测试它们在字符串中第一次 出现是否在第 n 个位置。
为了演示,请看一下带有字符索引的字符串 'hello world'
(我使用 .
来标记空格):
0 1 2 3 4 5 6 7 8 9 10
h e l l o . w o r l d
对于字母 l
,text.index('l')
将返回 2
,因此它只会包含在如果 n
为 1
或 2
,则输出。 l
也出现在索引 3 或 9 处并不重要,因为您只测试过 2 % n == 0
。这同样适用于 'o'
(位置 4 和 7),只有 4 % n == 0
被测试了。
您可以使用 enumerate()
function给你一个运行索引:
def GetNthLetters(text, n):
builtstring = ""
for index, letter in enumerate(text):
if index % n == 0:
builtstring = builtstring + letter
return builtstring
现在 index
对于每个字母都是正确的,无论是否重复。
但是,使用切片会容易得多:
def GetNthLetters(text, n):
return text[::n]
这也需要第 n 个字母:
>>> 'foo bar baz'[::2]
'fobrbz'
>>> 'foo bar baz'[::3]
'f ra'
>>> 'foo bar baz'[::4]
'fbb'
关于python - 在 Python 中获取字符串中的第 n 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46503865/