Python,分割字符串

0 投票
5 回答
3460 浏览
提问于 2025-04-17 14:34

我需要写一个程序,让用户输入一个单词,然后对这个单词里的每个字母做一些处理。用户不能一个字母一个字母地输入,只能输入一个完整的单词。

比如说,有人输入“test”,我该怎么让我的程序知道这是一个四个字母的单词,并且把它拆分开来,像是创建四个变量,每个变量对应一个字母。这个程序还应该能处理更长或更短的单词。

我可以使用一个循环语句吗?比如说用“对于每个字母,把它赋值给一个变量”,但是如果这个单词有20个字母,程序又该怎么处理所有的变量名呢?

5 个回答

1

你不需要做那些事情;在Python中,你可以用方括号来访问字符串中的字符:

>>> word = "word"
>>> print(word[0])
w
>>> print(word[3])
d
>>> print(len(word))
4
1

当你遍历一个字符串时,它会一个一个地返回里面的字符,比如:

for c in thestring:
    print(c)

如果你真的需要把这些字母放到一个列表里,你可以这样做,这样可以保持字母的顺序。不过,使用 list(string) 这个方法会更好一些(要注意,像字典或集合这样的无序类型是不能保证顺序的)。

3

你是想要这样的东西吗?

>>> s = 'four'
>>> l = list(s)
>>> l
['f', 'o', 'u', 'r']
>>>

补充说明:

虽然这看起来是你想要的,但其实可能没必要,因为一个字符串可以包含几乎任何长度的单词。所以像上面那样用一个字符串变量s就足够了,而不是为每个字符创建一堆单独命名的变量。这样做的一个问题是,写程序的其他部分会很困难,因为你不知道该用什么有效的变量名。

之所以可以不为每个字符单独创建变量,是因为一个字符串可以包含任意数量的字符,甚至可以是空的。Python内置的len()函数可以告诉你字符串中有多少个字母,如果你对一个字符串使用它,像上面那样的len(s)会返回4

在字符串中,你可以通过在方括号中用一个从0len(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还有很多其他的功能和内置工具,可以帮助你处理字符串(实际上可以简化上面的例子),这些你会随着对语言和它的许多库的熟悉而逐渐学到。

撰写回答