2017-07-11 3 views
-1

入力ファイルは連続しており、区切り文字のn番目の出現を改行で分割したいと思います。pythonを使用して連続ファイルのdelimeterのn番目の出現を見つけるには

私は次のことを試してみました:

with open ("ip.txt") as f: 
    for line in f: 
     A = line.split("Ç") 
     B= ['Ç'.join(x) for x in [A[i:i + 10] for i in xrange(0, len(A), 10)]] 
with open ("op.txt","w") as outfile: 
    outfile.write("Ç\n".join(s)) 

そして私は、メモリエラーを取得しています。

どうすればよいですか?コメントで明確化に基づく

+1

あなたの質問を編集し、我々は何が起こっているか見ることができるように完全なエラー/例外を追加してください。 –

+0

delimeter memoryエラーを分割中にエラーが発生しました – manyatha

答えて

0

新しい答え:私は実際にはないよ

1¢2¢3¢4¢5¢6¢7¢8¢9¢10¢ 
11¢12¢13¢14¢15¢16¢17¢18¢19¢20¢ 
21¢22 

旧答え:出力

def split(text, separator, each): 
    if each < 1: 
     raise AttributeError('each must be >= 1') 

    parts = text.split(separator) 

    if len(parts) <= each: 
     return [text] 

    lines = [] 
    for idx in range(0, len(parts), each): 
     segment = separator.join(parts[idx:idx + each]) 
     if idx + each < len(parts): 
      segment = '%s%s' % (segment, separator) 
     lines.append(segment) 

    return '\n'.join(lines) 


print(split('1¢2¢3¢4¢5¢6¢7¢8¢9¢10¢11¢12¢13¢14¢15¢16¢17¢18¢19¢20¢21¢22', '¢', 10)) 

エキサクあなたが望む結果が得られるので、私は2つの項目リストを返すコードスニペットを与えます:第1に、分割前の文字列パート、第2に分割後の文字列パート。わずかに異なる結果が必要な場合は、これを簡単に変更することができます。ここで

def split(text, separator, position): 
    if position < 1: 
     raise AttributeError('position must be >= 1') 

    parts = text.split(separator) 

    if len(parts) <= position: 
     return [text] 

    return [separator.join(parts[:position]), separator.join(parts[position:])] 

いくつかの例:

>>> split('part0&part1&part2', '&', 1) 
['part0', 'part1&part2'] 

>>> split('part0&part1&part2', '&', 2) 
['part0&part1', 'part2'] 

>>> split('part0&part1&part2', '&', 3) 
['part0&part1&part2'] 

>>> split('part0&part1&part2', '&', 0) 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "/Users/paco/Desktop/so/main.py", line 3, in split 
    raise AttributeError('position must be >= 1') 
AttributeError: position must be >= 1 
+0

ファイルがシーケンスおよび区切りファイルです。行が改行で区切られた後、正確に10番目の区切り文字が必要です。今、メモリエラーが発生しています。 – manyatha

+0

私はあなたの要件を理解していません。いくつかのサンプル入力文字列と期待される出力文字列を与えた方が良いでしょう。 –

+0

入力:2¢88¢m¢都市¢3¢6¢名前¢gen¢890¢¢01 56¢とすぐに。 – manyatha

関連する問題