python - 在 Python 中获取字符串中的第 n 个字符

标签 python arrays string

我有以下功能,但它没有给我预期的结果:

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

对于字母 ltext.index('l') 将返回 2,因此它只会包含在如果 n12,则输出。 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/

相关文章:

arrays - LotusScript ArrayUnique 函数似乎不适用于日期/时间数组

php - 哪个更有效,PHP 字符串函数或 PHP 中的正则表达式?

python - 如何在Python中将列表的各个元素添加到另一个列表中?

python - 在 Raspberry Pi 上的 python 串行端口中写入字符串

java - 需要有关我的 tic tac toe 演示的帮助 无效的顶级声明

控制台卡在读取文件并过滤数据字符数

java - 在Java中将字符串从蛇大小写转换为 Camel 大小写

arrays - 转换 [字符串]?在 Swift 中转换为字符串

python - 检查 IP 地址

python - 无法找到和绘制最大轮廓