2017-01-31 2 views
0

. Мой .txt файл содержит слова (все два или три слоговых слова, каждое слово в новой строке в .txt-файле), которые переносятся с помощью «-». Я ищу способ перенести место этого «случайного» испытания на одно место влево или вправо. Это код для возврата каждого слова в виде списка слогов:Разделите элемент списка в произвольной позиции

for thisTrial in trials: 
    wordList = thisTrial['word'].split("-") 
    print wordList 

Это возвращает, например:

[ 'подопечного', 'халата']

[ 'вмятины', 'IST']

...

Но то, что я хотел бы в качестве результата:

[ 'войну', 'Drobe'] или [ 'wardr', 'ОБЕ']

[ 'ден', 'Tist'] или [ 'Denti', 'й']

...

Любые идеи о том, как получить этот результат?

+1

Существует ровно один дефис в каждом слове? – fl00r

+0

Нет, один или два. – KnRm

+0

Возможно, вы предоставите больше примеров ввода и вывода? Пока неясно, чего вы хотите. – fl00r

ответ

0

Если есть только один дефис в каждом слове

from random import random 

for word in ["hel-lo", "worl-d"]: 
    pos = word.find("-") 
    mov = 1 if random() > 0.5 else -1 
    new_word = word.replace("-", "") 
    split = [new_word[0:pos+mov], new_word[pos+mov:]] 
    print(split) 

#=> ['he', 'llo'] 
#=> ['world', ''] 
# or 
#=> ['hell', 'o'] 
#=> ['wor', 'ld'] 
0
from random import randint 
results = [] 
for i in range(1,15): 
    randomSlicePt = random.randint(1,len(word)) 
    results.append(word[0:randomSlicePt] + '-' + word[randomSlicePt:len(word)]) 


>>> results 
['ward-robe', 'wardro-be', 'wardr-obe', 'war-drobe', 'ward-robe', 'war-drobe', 'wardr-obe', 'wa-rdrobe', 'wa-rdrobe', 'wardr-obe', 'ward-robe', 'wardrobe-', 'war-drobe', 'war-drobe'] 

Или вы не заботитесь о дефисе больше и просто хотите набрать через некоторые случайные косы слова.

results = [] 
def trial(word): 
    randomSlicePt = random.randint(1,len(word)) 
    answer = [] 
    answer.append(word[0:randomSlicePt]) 
    answer.append(word[randomSlicePt:len(word)]) 
    results.append(answer) 

for word in wordlist: 
     trial(word) 
results 
+0

ОП запросил случайным образом 1 влево или вправо, а не во всех перечислениях. – RobertB

+0

Хм. спасибо, я отредактирую это. – gregory

0

насчет:

import random 
def test(): 
    word  = "ward-robe" 
    delimiter = word.find('-') 
    word  = word.replace('-','') 
    l = [1,-1][random.getrandbits(1)] 
    result = word[0:d-l],word[d-l:] 
    print(result) 

> test() 
('war', 'drobe') 

> test() 
('wardr', 'obe')