2013-08-02 72 views
-1

我有這樣的腳本:列表理解Python的過濾器隨機

test = [ 
    'listen<SP>'+tags+'<SP>online<SP>for<SP>free,', 
    '<SP>listen<SP>'+tags+'<SP>online,', 
    '<SP>listen<SP>'+tags+'<SP>song,', 
    '<SP>listen<SP>'+tags+'<SP>putlocker,', 
    '<SP>download<SP>'+tags+'<SP>song,', 
    'listen<SP>'+tags+'<SP>free<SP>streaming,', 
    '<SP>listen<SP>'+tags+'<SP>song<SP>free,', 
    '<SP>listen<SP>'+tags+'<SP>online<SP>song,', 
    '<SP>download<SP>'+tags+'<SP>full<SP>song,', 
    'listen<SP>'+tags+'<SP>online<SP>free,', 
    '<SP>download<SP>'+tags+'<SP>2013<SP>song,', 
    '<SP>listen<SP>online<SP>'+tags+'<SP>for<SP>free,', 
    '<SP>listen<SP>'+tags+'<SP>free<SP>full<SP>song,', 
    'listen<SP>'+tags+'<SP>online<SP>2013,', 
    '<SP>where<SP>to<SP>listen<SP>'+tags+',', 
    '<SP>'+tags+'<SP>full<SP>song<SP>online,', 
    ''+tags+'<SP>online<SP>free,', 
    '<SP>listen<SP>'+tags+'<SP>free<SP>2013,', 
    ''+tags+'<SP>full<SP>song<SP>online,', 
    '<SP>free<SP>streaming<SP>'+tags+',', 
    '<SP>listen<SP>'+tags+'<SP>2013,', 
    '<SP>listen<SP>'+tags+'<SP>free,', 
    '<SP>hear<SP>'+tags+'<SP>online,', 
    '<SP>'+tags+'<SP>online,', 
    'hear<SP>'+tags+',', 
    '<SP>listen<SP>'+tags+',', 
    '<SP>'+tags+'<SP>free,', 
    '<SP>free<SP>'+tags+',', 
    '<SP>'+tags+'<SP>online,', 
    '<SP>online<SP>'+tags+',', 
    '<SP>'+tags+','] 
random.shuffle(test) 

scris = [x for x in test if len(x) <= 30] 
scris_fisiere = scris[0:7] 
row_test.append(allitems) 
fisier_text_tags.writerow(row_test) 

正如你可以看到它隨機和只寫有30個字符長到CSV文件的結果,我希望它做的是如果字符串長度超過30個字符,則寫一個字符串「whatever」。現在它只寫入長度小於30個字符的結果,如果結果是3個字符串,它只會像[0:2]一樣從0到2等寫入。

謝謝你的時間。

+0

你能改一下你的問題請,它不清楚你在說什麼。 –

+0

事實上,我的理解是,在列表理解中,如果字符串的長度超過30個字符,則要將字符串替換爲另一個字符串,但在此之後,我完全丟失了字符串。也許你應該讓示例列表更短並且完全可執行(標籤的值是多少;) –

回答

1

替換此行:

scris = [x for x in test if len(x) <= 30] 

scris = [len(x) <= 30 and x or 'whatever' for x in test] 
+0

它可以工作。非常感謝你。 :) – user215379

+0

不客氣。請記住關於標記答案是否正確。 – piokuc

+0

:)我必須等幾分鐘。非常感謝你。 – user215379