将字符串转换为单词数组 - Python

Posted

技术标签:

【中文标题】将字符串转换为单词数组 - Python【英文标题】:Converting a string to array of words - Python 【发布时间】:2016-02-04 11:28:23 【问题描述】:

我想在 Python 中创建一个函数,其中输入将是字符串并将其输入到要返回的数组中。

例如:

Input: "The dog is red"  
Output: "The", "dog", "is", "red"

我相信算法应该可以工作,但没有返回任何内容。据我所知,if 语句没有检测到空格 (")。

代码如下:

string = input("Input here:")
def token(string):
    start = 0
    i = 0
    token_list = []
    for x in range(0, len(string)):
        if " " == string[i:i+1]:
            token_list = token_list + string[start:i+1]
            print string[start:i+1]
            start = i + 1
        i += 1
    return token_list 

【问题讨论】:

【参考方案1】:

您可以将函数修改为如下所示:

string = input("Input here:")
def token(string):
    start, i = 0, 0
    token_list = []
    for x in range(0, len(string)):
        if " " == string[i:i+1]:
            token_list.append(string[start:i])
            start = i + 1
        i += 1
    token_list.append(string[start:i])
    return token_list

print token(string)

如果您不想包含尾随空格,则只需要追加直到 i。第二个append 是必要的,因为您的条件是检查是否有空格来包含该单词,但最后一个单词不会有尾随空格,而是会有一个行尾字符或空字符。

【讨论】:

【参考方案2】:

您可以简单地拆分字符串。

result=input.split(" ")

string = raw_input("Input here:")
def token(string):
    start = 0
    i = 0
    token_list = []
    for x in range(0, len(string)):
        if " " == string[i:i+1][0]:
            token_list.append(string[start:i+1])
            #print string[start:i+1]
            start = i + 1
        i += 1
    token_list.append(string[start:i+1])
    return token_list

print token(string)

【讨论】:

我愿意,但任务要求我实现自己的标记器。 谢谢!只是想知道,为什么要包含第二个“token_list.append(string[start:i+1])”? @user287474 因为你需要在space 之后包含最后一个string。你在空格之前包括string。所以最后一个woule 被省略

以上是关于将字符串转换为单词数组 - Python的主要内容,如果未能解决你的问题,请参考以下文章

如何使用PySpark将SparseVector中的前X个单词转换为字符串数组

将列表转换为字符串或单词[重复]

如何将用户输入的字符串转换为输入中单个字母的数组? [复制]

在Java中将句子字符串转换为单词的字符串数组

将浮点 numpy 数组转换为字符串数组 Python

将字符串数组转换为整数python [重复]