2017-04-21 20 views
0

AWS S3の列数を取得するには - ファイルのPythonスクリプトは、各行の列数を取得するためにAWS S3 - Pythonスクリプトファイル

私は、ファイルの各行から列数を取得する必要がありますAWS S3バケットに|区切り文字として、すべての行が列

入力ファイル

100|name1|Test 
200|name2|Test45 
300|name3 
400|name4|Test1|subject 

結果この場合

に基づいて、列の数と同じ数を持っているかどうかを印刷します|各行に対して2,2,1,3である。

列数が異なります。

+1

あなたの質問を簡略化するのに役立ちます。一度にいくつかのことを尋ねています。(1)AWSバケットからファイルを取得する。 (2)行内の列をカウントする。 (3)列の数を比較する。これらのステップのいくつかを行う方法をすでに知っているようです。 – Cireo

答えて

1

私はあなたの質問にコメントで述べたように、一度にいくつかの質問をしています。ここでは単純なpython部分に答えます:

"Given a table as list of strings and a delimiter, how can I determine if they have the same number of rows?"

これは比較的簡単です。最初の行をキャリブレーションして他の行を検証する必要がある列の数がわからないためです。

def columns_are_consistent(rows, delimiter): 
    """ 
    Returns True if the number of delimiters is the same in every row, 
    and False otherwise. 
    Note that in general: # columns == # delimiters + 1 
    """ 
    if not rows: # This could also be "if len(rows) < 2" 
     return True # Can't be inconsistent if there is nothing 
    # Calibrate on first row 
    expected = rows[0].count(delimiter) 
    # Validate remaining rows, note that "all([]) == True" 
    return all(row.count(delimiter) == expected for row in rows[1:]) 
+0

私はPythonの初心者です。私は使用されているロジックを理解することができますが、(行、区切り文字)の引数として関数(filename、|)を呼び出すだけで十分であるかどうかを説明できますか?または私はそれを処理する前にファイルを開く必要がありますか? – Rajeev

+0

@Rajeev、現在の質問で 'Input File'のような内容のファイルがあったら、 ' print columns_are_consistent(open(filename).readlines()、 '|') 'のようなロジックを実行できます。私はそれを1行に収めようとしないことをお勧めしますが – Cireo