【问题标题】:create a second row for a list in python and write list to txt file在python中为列表创建第二行并将列表写入txt文件
【发布时间】:2013-03-20 14:45:05
【问题描述】:

我有一个代码,它在某个阶段具有以下行:

n_brace.extend([numEL, valueLX[j],valueB[jj], el[2]])

这一行包含在一个 for 循环中,因此它产生例如:

n_brace:
[367, '62', '141', '142', 369, '124', '156', '155', 379, '344', '266', '265', 381, '313', '251', '252']

但我希望它改为:

n_brace:
[[367, '62', '141', '142'], [369, '124', '156', '155'], [379, '344', '266', '265'], [381, '313', '251', '252']]

在程序结束时,我打开一个文件并想向它写入n_brace

fbrace = open("C:/Abaqus_JOBS/brace.txt", 'w')
fbrace.write(n_brace)

我希望结果是:

367, 62, 141, 142
369, 124, 156, 155
379, 344, 266, 265
381, 313, 251, 252

但我收到以下错误:

TypeError: expected a character buffer object

有什么想法吗?

【问题讨论】:

    标签: python list io row


    【解决方案1】:

    extend() 更改为append()

    n_brace.append([numEL, valueLX[j],valueB[jj], el[2]])
    

    至于写作(假设 Python 2.x):

    with open("C:/Abaqus_JOBS/brace.txt", 'w') as fbrace:
        for row in n_brace:
            print >>fbrace, ', '.join(map(str, row))
    

    【讨论】:

    • 我得到:TypeError: sequence item 0: expected string, numpy.int32 found
    • 我在文件中写入的文本不是来自 n_brace 的文本:[1 1 2], [2 2 3], [3 3 4], [4 4 5], ....
    • @jpcgandre:现在那个我非常怀疑。确保您没有在代码中的某处覆盖n_brace
    • 如果我替换为 join(map(str, n_brace)) 我得到:[367, '62', '141', '142'], [369, '124', '156', '155'], [379, '344', '266', '265'], [381, '313', '251', '252'] [367, '62', '141', '142'], [369, '124', '156', '155'], [379, '344', '266', '265'], [381, '313', '251', '252'] [367, '62', '141', '142'], [369, '124', '156', '155'], [379, '344', '266', '265'], [381, '313', '251', '252'] [367, '62', '141', '142'], [369, '124', '156', '155'], [379, '344', '266', '265'], [381, '313', '251', '252'] 我得到四个相等的行以及 [ 和 ' 符号。
    • @jpcgandre:是nbrace 还是n_brace?对于口译员来说,这是两个不同的名字。
    猜你喜欢
    • 2018-04-10
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多