2015-08-18 5 views
0

Я сделал программу, которая позволяет пользователям вводить письмо, а затем отображает слова, начинающиеся с этой буквы. Я получил реальное письмо найти немного моей программы с этой страницы:Почему моя программа словаря возвращает случайные слова?

How to find a word that starts with a specific character

В частности: re.findall (г «\ бс \ ш +», текст)

Для того, чтобы пользователь сможет чтобы ввести любую букву, я сделал ввод (букву) и часть кода, которая преобразует этот вход в переменные верхнего и нижнего регистра, называемые буквенными буквами и буквенными обозначениями. Я затем изменил код из:

words = re.findall(r'\bs\w+', text) 

к:

words = re.findall(r'\b[(lowerletter)(upperletter)]\w+', text) 

Проблема заключается в том, когда я запускаю свою программу сейчас является то, что она дает случайные слова, не основанные на входе вы ввели. Например, я ввел букву K, и она дала мне слова, начинающиеся с r, u, p, t и т. Д.. В нижней строке и верхней переменной есть правильная информация, потому что когда я их печатаю, они содержат как верхнюю, так и нижнюю версию письма, которое я ввел. Я не знаю, что происходит.

Полный код минус пару сотен слов ниже:

import re 
text = "dialogue language rhythm a diamond lap abandon diary large rib ability dictate largely ribbon able die laser rice abortion diet last rich about differ late rid above difference lately ride abroad different later rider absence differently Latin ridge absolute difficult latter ridiculous absolutely difficulty laugh rifle absorb dig laughter right abstract digital launch rim abuse dignity law ring academic dilemma lawmaker riot accelerate dimension lawn rip accent diminish lawsuit rise accept dining lawyer risk acceptable dinner lay risky acceptance dip layer ritual access diplomat lead rival accessible diplomatic leader river accident direct leadership road accommodate direction leading robot accompany directly leaf rock accomplish director league rocket accomplishment dirt lean rod according dirty leap role account disability learn roll accountability disabled learning rolling accounting disagree least Roman accuracy disappear leather romance accurate disappointed leave romantic accurately disappointment lecture roof accusation disaster left room accuse disc leg root achieve discipline legacy rope achievement disclose legal rose acid discount legally rough acknowledge discourage legend roughly acquire discourse legislation round acquisition discover legislative route across discovery legislator routine act discrimination legislature routinely action discuss legitimate row active discussion lemon royal actively disease lend rub activist dish length rubber activity disk lens ruin actor dismiss less rule actress disorder lesson ruling actual display let rumor actually dispute letter run ad dissolve level runner adapt distance liability running add distant liberal rural added distinct liberty rush addition distinction library Russian additional distinctive license sack address distinguish lid sacred adequate distract lie sacrifice adjust distribute life sad adjustment distribution lifestyle safe administer district lifetime safely administration disturb lift safety administrative disturbing light sail administrator diverse lighting sake admire diversity lightly salad admission divide lightning salary admit divine like sale adolescent division likelihood sales adopt divorce likely salmon adoption DNA likewise salt adult do limb same advance dock limit sample advanced doctor limitation sanction advantage doctrine limited sand adventure document line sandwich advertising documentary link satellite advice dog lion satisfaction advise doll lip satisfy adviser domain liquid sauce advocate domestic list save aesthetic dominant listen saving affair dominate listener say affect donate literally scale afford donation literary scan afraid donor literature scandal African door little scare African-American doorway live scared after dose liver scary afternoon dot living scatter afterward double load scenario again doubt loan scene against dough lobby scent age down local schedule agency downtown locate scheme agenda dozen location scholar agent draft lock scholarship aggression drag log school aggressive drain logic science ago drama logical scientific agree dramatic lonely scientist agreement dramatically long scope agricultural draw long-term score agriculture drawer longtime scramble ah drawing look scratch ahead dream loop scream aid dress loose screen aide dried lose screening AIDS drift loss screw aim drill lost script air drink lot sculpture aircraft drinking lots sea airline drive loud seal airplane driver love cotton indicate racial vast couch indication racism vegetable could indicator rack vehicle council indigenous radar vendor counsel individual radiation venture counseling industrial radical verbal counselor industry radio verdict count inevitable rage version counter inevitably rail versus counterpart infant railroad vertical country infection rain very county inflation raise vessel coup influence rally veteran couple influential ranch via courage inform random victim course informal range victory court information rank video courtroom infrastructure rape view cousin ingredient rapid viewer cover inherent rapidly village coverage inherit rare violate cow initial rarely violation crack initially rat violence craft initiate rate violent crash initiative rather virtual crawl injure rating virtually crazy injury ratio virtue cream inmate rational virus create inner raw visible creation innocent re vision creative innovation reach visit creativity innovative react visitor creature input reaction visual credibility inquiry read vital credit insect reader vitamin crew insert readily vocal crime inside reading voice criminal insight ready volume crisis insist real voluntary criteria inspection realistic volunteer critic inspector reality vote critical inspiration realize voter criticism inspire really voting criticize install realm vs crop installation rear vulnerable cross instance reason wage crowd instant reasonable wagon crowded instantly rebel waist crucial instead rebuild wait cruel instinct recall wake cruise institution receive walk crush institutional receiver walking cry instruct recent wall crystal instruction recently wander Cuban instructional reception want cue instructor recession war cultural instrument recipe warehouse culture insurance recipient warm cup intact recognition warmth cure integrate recognize warn curiosity integrated recommend warning curious integration recommendation warrior currency integrity record wash current intellectual recording waste currently intelligence recover watch curriculum intelligent recovery water curtain intend recruit wave curve intense red way custody intensity reduce we custom intent reduction weak customer intention refer weaken cut interact reference weakness cute interaction reflect wealth cycle interest reflection wealthy dad interested reform weapon daily interesting refrigerator wear dam interfere refuge weather damage interior refugee weave damn internal refuse web dance international regain wedding dancer Internet regard weed dancing interpret regarding week danger interpretation regardless weekend dangerous interrupt regime weekly dare interval region weigh dark intervention regional weight darkness interview register weird data intimate regret welcome database into regular welfare date introduce regularly well daughter introduction regulate well-being dawn invade regulation well-known day invasion regulator west dead invent regulatory western deadline invention rehabilitation wet deadly inventory reinforce whale deal invest reject what dealer investigate relate whatever dear investigation related wheat death investigator relation wheel debate investment relationship wheelchair debris investor relative when debt invisible relatively whenever debut invitation relax where decade invite release whereas decent involve relevant wherever decide involved reliability whether decision involvement reliable which deck Iraqi relief while declare Irish relieve whip decline iron religion whisper decorate ironically religious white decrease irony reluctant who dedicate Islam rely whoever deem Islamic remain whole deep island remaining whom deeply isolate remark whose deer isolated remarkable why defeat isolation remember wide defend Israeli remind widely defendant issue reminder widespread defender it remote widow defense Italian removal wife defensive item remove wild deficit its render wilderness define itself rent wildlife definitely jacket rental will definition jail repair willing degree Japanese repeat willingness delay jar repeatedly win deliberately jaw replace wind delicate jazz replacement window delight jeans reply wine deliver jet report wing delivery Jew reportedly winner demand jewelry reporter winter democracy Jewish reporting wipe Democrat job represent wire democratic join representation wisdom demographic joint representative wise demonstrate joke republic wish demonstration journal Republican with denial journalism reputation withdraw dense journalist request withdrawal density journey require within deny joy required without depart judge requirement witness department judgment rescue wolf departure judicial research woman depend juice researcher wonder dependent jump resemble wonderful depending jungle reservation wood depict junior reserve wooden deploy jurisdiction residence word deposit juror resident work depressed jury residential worker depression just resign working depth justice resist workout deputy justify resistance workplace derive keep resolution works descend key resolve workshop describe kick resort world description kid resource worldwide desert kill respect worried deserve killer respectively worry design killing respond worth designer kind respondent would desire king response wound desk kingdom responsibility wow desperate kiss responsible wrap desperately kit rest wrist despite kitchen restaurant write dessert knee restore writer destination kneel restrict writing destroy knife restriction written destruction knock result wrong detail know resume yard detailed knowledge retail yeah detect known retailer year detective Korean retain yell determination lab retire yellow determine label retired yes devastating labor retirement yesterday develop laboratory retreat yet developer lack return yield developing ladder reveal you development lady revelation young developmental lake revenue youngster device lamp reverse your devil land review yours devote landing revolution yourself diabetes landmark revolutionary youth diagnose landscape reward zone diagnosis lane rhetoric ." 
letter = input ("Please Enter the Letter you want to find the words beggining with.") 
upperletter = letter.upper() 
lowerletter = letter.lower() 
words = re.findall(r'\b[(lowerletter)(upperletter)]\w+', text) 
print (words) 
+0

Является ли текст строчным? Насколько оно большое? – Cyphase

ответ

2

Variable сцепляются с оригинальным регулярное выражение с использованием + оператора.

words = re.findall(r'\b[' + lowerletter + upperletter +r']\w+', text) 
0

Regex может быть слишком много для простой проверки, как это; задача может быть выполнена стандартными строковыми методами.

Разбиение текста с расколом(), мы сравним первую букву каждого из ее слов, пониженный на вход, внутри известного списка понимания:

letter = raw_input ("Please Enter the Letter you want to find the words beggining with: ") 
words = [word for word in text.split() if word.lower()[0] == letter.lower()) 
print (words) 

Несколько интересных моментов: использование raw_input, для это не должно быть истолковано; если вы замените word.lower()[0] на word.lower().startswith(letter.lower()), вы можете проверить наличие более одного символа. Наконец, если мы используем генератор, это более эффективно с памятью (и весело :); последняя строка 2 будет:

words = (word for word in text.split() if word.lower()[0] == letter.lower()) 
for word in words: 
    print word 
Смежные вопросы