1

それは言う

 james.append(sanitize(each_item))  
 (mins, secs) = time_string.split(splitter)

 need more than 1 value to unpack

どうしたの?ありがとうございました。Head First Pythonでの例です

james = []
def sanitize(time_string):
    if '-' in time_string:
        splitter = '-'
    elif ':' in time_string:
        splitter = '-'        
    else:
        splitter = ','
    (mins, secs) = time_string.split(splitter)
    return(mins + '.' + secs)

with open('james.txt', 'r') as jaf:
    data = jaf.readline()
    james_data = data.strip().split(',')

for each_item in james_data:
    james.append(sanitize(each_item))
sort(james)
print(james)
4

1 に答える 1

1

2番目のifが必要だと確信しています

elif ':' in time_string:
    splitter = ':'    

基本的に、min:sec または min-sec または min,sec のタイプの文字列を探し、それらを min.sec に変換しようとします。

ただし、現在、分割には有効なものがないため、min-sec 以外では失敗します。

したがって、次のようなペアを持つ csv ファイルでのみ機能するようです。

 min-sec, min-sec, min-sec,

最初の行で

2 番目の「if」を修正すると、min:sec でも機能しますが、: または - を持たない他のトークンも処理する必要があります。

<???>-<????>-<???>また、アンパックする値が多すぎるなどの値でも失敗します

サニタイズは、入力を分割する文字列を探し、スプリッターを決定すると、それを使用して文字列を分割し、再構築しようとします..

ただし、スプリッターが複数回表示されると、アンパックする値が多すぎるため、失敗します。そして、デフォルトのスプリッターは,、これまでこのテキストに表示されない可能性がある唯一の文字です

于 2013-11-11T08:17:51.803 に答える