使用 Python 迭代字符串中的每个字符

2025-01-17 09:23:00
admin
原创
85
摘要:问题描述:如何在 Python 中迭代字符串(每次通过循环从字符串中获取每个字符,每次一个)?解决方案 1:正如约翰内斯指出的那样,for c in "string": #do something with c 你可以使用以下结构在 Python 中迭代几乎任何东西for loop...

问题描述:

如何在 Python 中迭代字符串(每次通过循环从字符串中获取每个字符,每次一个)?


解决方案 1:

正如约翰内斯指出的那样,

for c in "string":
    #do something with c

你可以使用以下结构在 Python 中迭代几乎任何东西for loop

例如,open("file.txt")返回一个文件对象(并打开该文件),对其进行迭代,迭代该文件中的行

with open(filename) as f:
    for line in f:
        # do something with line

如果这看起来像魔术,那么它确实有点像,但其背后的想法其实很简单。

有一个简单的迭代器协议,可以应用于任何类型的对象以使循环for在其上工作。

只需实现一个定义next()方法的迭代器,并__iter__在类上实现方法,使其可迭代即可。(当然__iter__,应该返回一个迭代器对象,即定义的对象next()

参见官方文档

解决方案 2:

如果在遍历字符串时需要访问索引,请使用enumerate()

>>> for i, c in enumerate('test'):
...     print i, c
... 
0 t
1 e
2 s
3 t

解决方案 3:

甚至更简单:

for c in "test":
    print c

解决方案 4:

为了做出更全面的回答,如果您真的想将方形钉子插入圆孔中,则可以在 Python 中应用 C 语言中迭代字符串的方式。

i = 0
while i < len(str):
    print str[i]
    i += 1

但是话又说回来,既然字符串本质上是可迭代的,为什么还要这样做呢?

for i in str:
    print i

解决方案 5:

好吧,你也可以做一些有趣的事情,比如这个,并使用 for 循环完成你的工作

#suppose you have variable name
name = "Mr.Suryaa"
for index in range ( len ( name ) ):
    print ( name[index] ) #just like c and c++ 

答案是

苏里亚先生

但是由于 range() 创建了一个序列值列表,因此您可以直接使用名称

for e in name:
    print(e)

这也产生了相同的结果,并且看起来更好,并且可以与任何序列(如列表,元组和字典)一起使用。

我们使用了两个内置函数(Python 社区中的 BIF)

1)range() - range() BIF 用于创建索引示例

for i in range ( 5 ) :
can produce 0 , 1 , 2 , 3 , 4

2)len() - len() BIF 用于找出给定字符串的长度

解决方案 6:

如果您想使用更实用的方法来迭代字符串(也许以某种方式对其进行转换),您可以将字符串拆分为字符,对每个字符应用一个函数,然后将生成的字符列表重新合并为字符串。

字符串本质上是字符列表,因此“map”将遍历字符串 - 作为第二个参数 - 将函数 - 第一个参数 - 应用于每个字符串。

例如,这里我使用了一个简单的 lambda 方法,因为我想要做的只是对字符进行简单的修改:这里,增加每个字符的值:

>>> ''.join(map(lambda x: chr(ord(x)+1), "HAL"))
'IBM'

或者更一般地:

>>> ''.join(map(my_function, my_string))

其中 my_function 接受一个 char 值并返回一个 char 值。

解决方案 7:

这里的几个答案都使用了rangexrange通常来说,它返回的是生成器,而不是完全实例化的列表。当内存和/或长度变化很大的可迭代对象可能成为问题时,xrange这种方法更胜一筹。

解决方案 8:

您还可以执行以下操作:

txt = "Hello World!"
print (*txt, sep='
')

这不使用循环,而是内部打印语句来处理它。

*将字符串解包成列表并将其发送到打印语句

`sep='
'`将确保下一个字符打印在新行上

输出将是:

H
e
l
l
o
 
W
o
r
l
d
!

如果确实需要循环语句,那么正如其他人提到的,您可以使用这样的 for 循环:

for x in txt: print (x)

解决方案 9:

如果你遇到需要的情况get the next char of the word using __next__(),请记住创建一个string_iterator并对其进行迭代,而不是original string (it does not have the __next__() method)

在这个例子中,当我找到一个 char = 时,[我会继续寻找下一个单词,但我没有找到],所以我需要使用 next

在这里,对字符串进行 for 循环不会有帮助

myString = "'string' 4 '['RP0', 'LC0']' '[3, 4]' '[3, '4']'"
processedInput = ""
word_iterator = myString.__iter__()
for idx, char in enumerate(word_iterator):
    if char == "'":
        continue

    processedInput+=char

    if char == '[':
        next_char=word_iterator.__next__()
        while(next_char != "]"):
          processedInput+=next_char
          next_char=word_iterator.__next__()
        else:
          processedInput+=next_char
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用