我如何在Python中迭代一个字符串(从字符串中获得每个字符,一次一个,每次通过循环)?
当前回答
您还可以执行以下操作:
txt = "Hello World!"
print (*txt, sep='\n')
这并不使用循环,但内部打印语句照顾它。
*将字符串解包到一个列表中并将其发送给print语句
Sep ='\n'将确保下一个字符打印在新行上
输出将是:
H
e
l
l
o
W
o
r
l
d
!
如果你确实需要一个循环语句,那么就像其他人提到的,你可以像这样使用for循环:
for x in txt: print (x)
其他回答
如果您希望使用更函数化的方法来迭代字符串(也许以某种方式转换它),您可以将字符串分割为字符,对每个字符应用一个函数,然后将生成的字符列表连接回字符串。
字符串本质上是一个字符列表,因此'map'将迭代字符串-作为第二个参数-将函数-第一个参数-应用到每个字符串。
例如,这里我使用一个简单的lambda方法,因为我想做的只是对字符进行简单的修改:这里,增加每个字符值:
>>> ''.join(map(lambda x: chr(ord(x)+1), "HAL"))
'IBM'
或者更一般地说:
>>> ''.join(map(my_function, my_string))
其中my_function接受一个char值并返回一个char值。
如果在遍历字符串时需要访问索引,请使用enumerate():
>>> for i, c in enumerate('test'):
... print i, c
...
0 t
1 e
2 s
3 t
更简单:
for c in "test":
print c
约翰内斯指出,
for c in "string":
#do something with c
你可以使用for循环构造在python中迭代几乎任何东西,
例如,open("file.txt")返回一个文件对象(并打开文件),遍历该文件中的行
with open(filename) as f:
for line in f:
# do something with line
如果这看起来像魔法,好吧,它有点像,但它背后的想法真的很简单。
有一个简单的迭代器协议,可以应用于任何类型的对象,使for循环在它上工作。
只需实现一个定义next()方法的迭代器,并在类上实现__iter__方法,使其可迭代。(__iter__当然应该返回一个迭代器对象,即定义了next()的对象)
参见官方文件
您还可以执行以下操作:
txt = "Hello World!"
print (*txt, sep='\n')
这并不使用循环,但内部打印语句照顾它。
*将字符串解包到一个列表中并将其发送给print语句
Sep ='\n'将确保下一个字符打印在新行上
输出将是:
H
e
l
l
o
W
o
r
l
d
!
如果你确实需要一个循环语句,那么就像其他人提到的,你可以像这样使用for循环:
for x in txt: print (x)
推荐文章
- 如何排序mongodb与pymongo
- 不可变与可变类型
- 列表是线程安全的吗?
- 操作系统。makdirs在我的路径上不理解“~”
- 如何在Django模板中获得我的网站的域名?
- 如何删除表中特定列的第一个字符?
- 在django Forms中定义css类
- 如何在Python中scp ?
- Numpy Max vs amax vs maximum
- 我应该如何从字符串中删除所有的前导空格?- - - - - -斯威夫特
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 每n行有熊猫
- 实例属性attribute_name定义在__init__之外
- 如何获取在Python中捕获的异常的名称?
- 第一次出现的值大于现有值的Numpy