0

特定の文字を挿入する必要があるリストがあります\n

ただし、同時にこれは 2 つの for ループ内になります。\nその場合、その場所に がすでに存在するかどうかを確認する必要があります。

存在する場合は挿入しないでください。それ以外の場合\nは、その位置に挿入します。

# position of '\n' from previous list
# '\n' needs to be exactly at the same position as in the previous lsit

indexes = [i for i, val in enumerate(input_list) if val == '\n']

ncol = some value

nrows = some value

for column in range(1, ncol):

    for row in range(1, nrows):
        abc.append(ws2.cell(row = row, column=column).value)
        if ind in indexes:
            abc.insert(ind, '\n')
        #print('abc: ', abc)
        concatABC = '\n'.join(abc)
        #print('Concate: ', concatABC)
        ws.cell(row=(nrows), column=(column)).value = concatABC
    del abc[:]

ifループでは、すでに存在するかどうかを確認する必要が\nあります。必要なのは一度だけなので、毎回挿入するのは意味がありません。

入力TXTファイルを使用して生成されたinput_listで指定された特定のデータ構造を持つExcelファイルを生成しています。

混乱させて申し訳ありません、

ind の値は、元の入力リストから '\n' の位置を取得しているリスト インデックスからのものです。コードの合間に、xml ファイルからデータを抽出して Excel に入れています。ここで、このデータを最後の Excel 行/セルに連結している間、TXT ファイルで指定された形式を維持する必要があります。

私の問題は、入力リストが安定しているだけで、他のすべてのものはXMLから来ているか、ループの繰り返し中に更新されていることです。

@wim: 入力は次のようになります.. input_list = ['abc', '\n', 'def', 'ghi', '\n', 'jkl', 'mno']

この入力リストから \n のインデックスを取得し、Excel で先頭の行をすべて連結して、\n を入力リストの正確な場所に配置します。それが全体の話です。

Excel での出力:

行 1: abc

行 2: デフォルト

行 3: ギ

行 4: jkl

行 5: 月

行 6: abc
空行 (\n)
def
ghi
空行 (\n)
jkl
mno

4

1 に答える 1

1

次のような関数を使用できます。

lis=[1,2,3,4,5,'\n','abc','a']

def ins(pos):

    if lis[pos]=='\n':
        print ('found')
    else:
        lis.insert(pos,'\n')

出力:

>>> ins(3)
>>> lis
[1, 2, 3, '\n', 4, 5, '\n', 'abc', 'a']
>>> ins(5)
>>> lis
[1, 2, 3, '\n', 4, '\n', 5, '\n', 'abc', 'a']
>>> ins(7)
found
>>> lis
[1, 2, 3, '\n', 4, '\n', 5, '\n', 'abc', 'a']
>>> ins(len(lis)-1)
>>> lis
[1, 2, 3, '\n', 4, '\n', 5, '\n', 'abc', '\n', 'a']
于 2012-08-13T11:19:35.020 に答える