2016-11-08 15 views
-1

私はPythonで非常に新しいので、次の(手作業またはPythonで)解決する必要があります: データセットの場合、各ファイルは、 1行のテキストを続けます。日付と数値(ごめん文が作るていない場合SENCE):選択された線の結合

2, 

4, 

6, 

1, 

2, 

02-sep-2016, blah blah, blah, 83838338 

3, 

0, 

0, 

03-Aug-2000, blah, 300033 

は私が削除されるテキスト、残りの目の前にあるように、テキストの行の上の最大数を必要とする:

6,02-sep-2016, blah blah, blah, 83838338 

3,03-Aug-2000, blah, 300033 

私はmax()機能を知っていますが、含める番号のすべてのファイルに対して一般規則としてどのように指定すればいいですか?また、文章を含めることなくいくつかの番号をint()に選択的に切り替えるにはどうすればよいですか? len(line)<=3ifの文を試してみましたが、機能しません。

答えて

0

for line in my_file: ...を使用して入力ファイルを読むことができます。 maxを使用したい行が常にあなたが記述した書式(カンマとその後に続くカンマ)に従うならば、コンマを破棄することでそれらを整数としてセットに格納することができ、\nをスライスしてから結果をトランススタイピングする(すなわちint(line[:-2])を使用)。 maxは、あなたにstr()で文字列に戻すことができるセットの最大の要素を与えます。これらの行と日付を特徴付ける行を区別するために、日付行(つまり文字または - )にしか見つからないものを探します。

0
from future.utils import isint 
data = ["02-sep-2016, blah blah, blah, 83838338",2, 4,6,1,2,"02-sep-2016, blah blah, blah, 83838338",3,0,0,"03-Aug-2000, blah, 300033"] 

vals=[] 
final_data = "%d,%s" 
formatted_rec = [] 
for each_val in data: 

    if not isint(each_val) and "-" in each_val: 
     if vals: 
      max_digit = max(vals) 
     else: 
     #If text happens to be the first element of data set, set max_digit to zero 
      max_digit = 0 
     vals=[] 
     formatted_rec.append(final_data %(max_digit, each_val)) 
    else: 
     vals.append(each_val) 

for each_rec in formatted_rec: 
    print each_rec 

出力:

0,02-sep-2016, blah blah, blah, 83838338 
6,02-sep-2016, blah blah, blah, 83838338 
3,03-Aug-2000, blah, 300033 
関連する問題