1

我正在尝试编写一个函数,该函数将在 shell 中打开一个 .txt 文件作为 str 列表的列表。

该文件类似于:

TYUIO
GHJKL
BNMCV
ASDFG
XCVBN

我需要我的函数返回:

[['T', 'Y', 'U', 'I', 'O'], ['G', 'H', 'J', 'K', 'L'], ...]

等等。

我写的函数几乎产生了这个。它返回:

[['TYUIO'], ['GHJKL'], ...]

等等。我需要更改/添加到此函数以使其返回正确的嵌套列表?

这是我的功能:

board_list = []
for line in board_file:
    items = line.rstrip('\n').split('\t')
    items = [item.strip() for item in items]
    board_list.append(items)

return board_list

任何人都可以帮忙吗?

4

3 回答 3

4

尝试使用list()extend()

items = [list(item.strip()) for item in items]
board_list.extend(items)

您也可以在一行中执行此操作,假设每行包含一个单词。我不确定你为什么要分手,\t所以这可能对你不起作用。

with open("data.txt") as board_file:
    board_list = [list(line) for line in board_file.read().split('\n') if line]
于 2012-11-11T14:16:46.457 回答
1

如果打开文本文件的结果是一个行列表,我将把这个列表称为listoflines,所以我们可以定义这个函数:

def listof(listoflines):
    board_list = []
    board = []
    for element in listoflines:
       board_list.append((element.strip('\n')).split())
    for member in board_list:
       for i in range(len(member)):
          board.append(list(member[i]))

    return board
于 2012-11-11T14:56:03.343 回答
0

请注意,您只是忘记将字符串转换为值列表,为此您可以使用内置的 map 函数

items = map(list, items)
于 2012-11-11T14:23:15.783 回答