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

2025-01-17 09:23:00
admin
原创
113
摘要:问题描述:如何在 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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2974  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1836  
  PLM(产品生命周期管理)系统在企业的产品研发、生产与管理过程中扮演着至关重要的角色。然而,在实际运行中,资源冲突是经常会遇到的难题。资源冲突可能导致项目进度延迟、成本增加以及产品质量下降等一系列问题,严重影响企业的效益与竞争力。因此,如何有效应对PLM系统中的资源冲突,成为众多企业关注的焦点。接下来,我们将详细探讨5...
plm项目管理系统   47  
  敏捷项目管理与产品生命周期管理(PLM)的融合,正成为企业在复杂多变的市场环境中提升研发效率、增强竞争力的关键举措。随着技术的飞速发展和市场需求的快速更迭,传统的研发流程面临着诸多挑战,而将敏捷项目管理理念融入PLM,有望在2025年实现研发流程的深度优化,为企业创造更大的价值。理解敏捷项目管理与PLM的核心概念敏捷项...
plm项目   47  
  模块化设计在现代产品开发中扮演着至关重要的角色,它能够提升产品开发效率、降低成本、增强产品的可维护性与可扩展性。而产品生命周期管理(PLM)系统作为整合产品全生命周期信息的关键平台,对模块化设计有着强大的支持能力。随着技术的不断发展,到 2025 年,PLM 系统在支持模块化设计方面将有一系列令人瞩目的技术实践。数字化...
plm软件   48  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用