Python,分割字符串
我需要写一个程序,让用户输入一个单词,然后对这个单词里的每个字母做一些处理。用户不能一个字母一个字母地输入,只能输入一个完整的单词。
比如说,有人输入“test”,我该怎么让我的程序知道这是一个四个字母的单词,并且把它拆分开来,像是创建四个变量,每个变量对应一个字母。这个程序还应该能处理更长或更短的单词。
我可以使用一个循环语句吗?比如说用“对于每个字母,把它赋值给一个变量”,但是如果这个单词有20个字母,程序又该怎么处理所有的变量名呢?
5 个回答
你不需要做那些事情;在Python中,你可以用方括号来访问字符串中的字符:
>>> word = "word"
>>> print(word[0])
w
>>> print(word[3])
d
>>> print(len(word))
4
当你遍历一个字符串时,它会一个一个地返回里面的字符,比如:
for c in thestring:
print(c)
如果你真的需要把这些字母放到一个列表里,你可以这样做,这样可以保持字母的顺序。不过,使用 list(string)
这个方法会更好一些(要注意,像字典或集合这样的无序类型是不能保证顺序的)。
你是想要这样的东西吗?
>>> s = 'four'
>>> l = list(s)
>>> l
['f', 'o', 'u', 'r']
>>>
补充说明:
虽然这看起来是你想要的,但其实可能没必要,因为一个字符串可以包含几乎任何长度的单词。所以像上面那样用一个字符串变量s
就足够了,而不是为每个字符创建一堆单独命名的变量。这样做的一个问题是,写程序的其他部分会很困难,因为你不知道该用什么有效的变量名。
之所以可以不为每个字符单独创建变量,是因为一个字符串可以包含任意数量的字符,甚至可以是空的。Python内置的len()
函数可以告诉你字符串中有多少个字母,如果你对一个字符串使用它,像上面那样的len(s)
会返回4
。
在字符串中,你可以通过在方括号中用一个从0
到len(s)-1
的整数来随机访问任何字符,所以要引用第三个字符,你可以用s[2]
。可以把这个索引想象成是从字符串开头开始的偏移量。
尽管如此,在Python中,使用索引通常是不必要的,因为你也可以通过for
循环逐个处理字符串中的每个字符,而不需要使用索引,像这个简单的例子所示:
num_vowels = 0
for ch in s:
if ch in 'aeiou':
num_vowels += 1
print 'there are', num_vowels, 'vowel(s) in the string', s
Python还有很多其他的功能和内置工具,可以帮助你处理字符串(实际上可以简化上面的例子),这些你会随着对语言和它的许多库的熟悉而逐渐学到。