首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将列表数组转换为字符串语料库,并将字符串乘以数字(提供的示例)

如何将列表数组转换为字符串语料库,并将字符串乘以数字(提供的示例)
EN

Stack Overflow用户
提问于 2021-05-23 01:46:06
回答 5查看 96关注 0票数 1

我得到了以下列表数组。

[array(['I', '1', 'am', '1', 'a', '1', 'boy', '3']) array(['I', '1', 'am', 'a', 'girl', '1']) array(['I', '1', 'am', '1', 'non-binary', '2'])

我想写一个python代码,将数组转换成一个语料库,其中文本乘以数字,即,格式如下:

corpus = [ "I am a boy boy boy", "I am a girl", "I am non-binary non-binary]

我如何在Python上实现这一点?任何帮助都将不胜感激。

EN

回答 5

Stack Overflow用户

发布于 2021-05-23 02:12:48

尝试以下操作:

代码语言:javascript
复制
data = [['I', '1', 'am', '1', 'a', '1', 'boy', '3'], ['I', '1', 'am', '1', 'a', '1', 'girl', '1'], ['I', '1', 'am', '1', 'non-binary', '2']]

def stringify(lst): # function: convert list into str with the words repeated
    repeated = [' '.join([lst[i]] * int(lst[i + 1])) for i in range(0, len(lst), 2)]
    return ' '.join(repeated)

output = [stringify(x) for x in data] # apply the function for each item
print(output) # ['I am a boy boy boy', 'I am a girl', 'I am non-binary non-binary']

这一次基本上是重复应用列表理解和join方法。

票数 1
EN

Stack Overflow用户

发布于 2021-05-23 02:44:25

这是我想出来的。

代码语言:javascript
复制
def corpus(list):
    s = []
    for x in range(len(list)):
        if not list[x].isdigit():
            if (x != len(list)-1) and (list[x+1].isdigit()):
                for num in range(int(list[x+1])):
                    s.append(list[x])
            else:
                s.append(list[x])
    return ' '.join(s)

这应该检查列表的每个索引后面是否有一个数字,并返回索引乘以其中包含必要空格的数字。对不起,如果它是笨重的,我试着让它快。如果您需要澄清if/else语句,请让我知道。

编辑:我在这上面花了一些额外的时间,这样代码就不会那么笨拙了。我们使用‘'.join()在每个条目之间添加空格,而不是每次都在字符串中添加一个空格,然后针对最后一次添加进行调整。将其应用于您提供的列表将产生以下结果

代码语言:javascript
复制
a = [['I', '1', 'am', '1', 'a', '1', 'boy', '3'],
     ['I', '1', 'am', 'a', 'girl', '1'],
     ['I', '1', 'am', '1', 'non-binary', '2']]

print(list(map(corpus,a)))

['I am a boy boy boy', 'I am a girl', 'I am non-binary non-binary']
票数 0
EN

Stack Overflow用户

发布于 2021-05-23 02:45:41

您可以使用列表理解来获取所有单词,然后使用另一个列表理解来“扁平化”列表。

代码语言:javascript
复制
data = [['I', '1', 'am', '1', 'a', '1', 'boy', '3'], 
        ['I', '1', 'am', '1', 'a', '1', 'girl', '1'], 
        ['I', '1', 'am', '1', 'non-binary', '2']]

corpus = [[word]*int(sentence[pos+1]) for sentence in data for pos, word in enumerate(sentence) if pos % 2 == 0]

corpus = [word for words in corpus for word in words]

print(corpus)

""" OUTPUT
['I', 'am', 'a', 'boy', 'boy', 'boy', 'I', 'am', 'a', 'girl', 'I', 'am', 'non-binary', 'non-binary']
"""
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67652524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档