在Python中加入列表中的连续单词

2024-03-29 01:00:53 发布

您现在位置:Python中文网/ 问答频道 /正文

有一堆从.txt文件转换而来的列表,这些列表被读取为字符串的集合,如下所示:

['New', 'Jersey', '1', '0', '1', '999']
['West', 'North', 'Central', '1', '0', '100', '90']

这些列表有不同数量的并列单词(第一个有2个,第二个有3个,以此类推)

我想输出一个新的列表(然后输入一个已编译的数据帧),将单词并排连接在一起,如:

['New Jersey', '1', '0', '1', '999']
['West North Central', '1', '0', '100', '90']

这将使新列表(和数据帧)具有相同的长度。你知道吗

很容易将append(line.split())放入每个字符串的新列表中,但无法找出连接所有单词并分别附加每个数字所需的if语句和.join()。你知道吗


Tags: 文件数据字符串txt列表new数量line
3条回答

使用^{},可以按str.isalpha分组,有条件地连接字符串,然后链接结果:

from itertools import chain, groupby

L = ['New', 'Jersey', '1', '0', '1', '999']

grouper = groupby(L, key=str.isalpha)
joins = [[' '.join(v)] if alpha_flag else list(v) for alpha_flag, v in grouper]
res = list(chain.from_iterable(joins))

print(res)

['New Jersey', '1', '0', '1', '999']
line = ['West', 'North', 'Central', '1', '0', '100', '90']
words = []
nums = []

for word in line:
    if word.isalpha():
        words.append(word)
    else:
        nums.append(word)

new_line = [' '.join(words)]
new_line.extend(nums)

# new_line == ['West North Central', '1', '0', '100', '90']

我基本上是在列表1中遍历字符串。如果它恰好是一个单词,我会将它附加到list2,否则它会附加到list3。如果字符串仅由数字组成,则方法isdigit()返回true。最后,使用“join”将list2的所有内容作为单个字符串附加到answer,并使用extend将list3的所有元素添加到answer[]的末尾。你知道吗

list1=['West North Central', '1', '0', '100', '90']
list2=[]
list3=[]
for i in list1:
    if i.isdigit():
        list3.append(i)
    else:
        list2.append(i)
answer = []
answer.append(' '.join(list2))
answer.extend(list3)

相关问题 更多 >