2017-08-07 5 views
0

Ich bin zu Python neu, also weiß ich nicht, wie man alle 6 Buchstabenwort in einer Textdatei findet und dann nach dem Zufallsprinzip eines dieser Wörter auswählt.
Erste Problem: Ich weiß nicht, wie Sie den Pfad zu der Datei in Mac finden. Ich weiß es so etwas wie dies sein sollte:Finden Sie Wörter mit 6 Buchstaben in einer Textdatei

infile = open(r'C:\Users\James\word.txt', 'r') 

Zweites Problem: erstelle ich eine leere Liste übertragen dann das Wort in Textdatei in die Liste dann für Schleife verwenden?
Like:

words = ['adcd', 'castle', 'manmen'] 
for n in words: 
    if len(n) ==6: 
     return n 

Drittes Problem: Dann wie bekomme ich ein zufälliges Wort in der Liste?

+1

Um, Mac kein C: \ Laufwerk, so dass der erste Code setzen nicht korrekt –

+1

die Textdatei im selben Verzeichnis wie die Py-Datei. Dann benutze 'open ('word.txt')' ohne einen Pfad. –

+0

Wo befindet sich Ihre Python-Datei in Ihrer Textdatei? –

Antwort

0

Zuerst legen Sie Ihre Datei in den gleichen Ordner wie die Datei .py.

Dann versuchen Sie dies:

# Create a list to store the 6 letter words 
sixLetterWords= [] 
# Open the file 
with open('word.txt') as fin: 
    # Read each line 
    for line in fin.readlines(): 
     # Split the line into words 
     for word in line.split(" "): 
      # Check each word's length 
      if len(word) == 6: 
       # Add the 6 letter word to the list 
       sixLetterWords.append(word) 
# Print out the result 
print(sixLetterWords) 
1

Sie Regex nutzen könnten alle Wörter mit 6 Buchstaben zu finden:

import re 
word_list = list() 
with open('words.txt') as f: 
    for line in f.readlines(): 
     word_list += re.findall(r'\b(\w{6})\b', line) 

regex in Aktion:

In [129]: re.findall(r'\b(\w{6})\b', "Here are some words of varying length") 
Out[129]: ['length'] 

Dann random.choice verwenden zu holen ein zufälliges Wort aus dieser Liste:

import random 
word = random.choice(word_list) 
0

Wenn Sie auf Python 3.5 oder besser sind, tun Sie sich selbst einen Gefallen und lernen Sie, pathlib.Path Objekte zu verwenden. Um eine Datei in Ihrem Benutzerverzeichnis zu finden, dies einfach tun:

from pathlib import Path 

home_path = Path.home() 
in_path = home_path/'word.txt' 

Jetzt ist in_path ein Weg artigen Objekt zeigt auf eine Datei namens „word.txt“ in der Spitze Ihres Benutzerverzeichnisses.Sie können sicher und einfach den Text aus diesem Objekt erhalten, und spaltete es in einzelne Wörter als auch, auf diese Weise:

text = in_path.read_text() # read_text opens and closes the file 
text_words = text.split() # splits the contents into list of words at all whitespace 

Verwenden Sie die append() Methode Wörter auf Ihre Wortliste hinzuzufügen:

six_letter_words = [] 
for word in text_words: 
    if len(word) == 6: 
     six_letter_words.append(word) 

die letzten 3 Zeilen können verkürzt werden, um eine Liste Verständnis verwendet, die für die Erstellung der Liste anstelle sehr schöne Python Syntax ist (ohne eine for-Schleife oder mit der Append-Methode zu schreiben):

six_letter_words = [word for word in words if len(word) == 6] 

Wenn Sie nicht über Wörter mit Zahlen und Satzzeichen erhalten, um sicherzustellen, möchten, verwenden Sie eine isalpha() Kontrolle:

six_letter_words = [word for word in words if len(word) == 6 and word.isalpha()] 

Wenn Zahlen sind OK, aber Sie wollen nicht Interpunktion, verwenden Sie eine isalnum() Prüfung:

six_letter_words = [word for word in words if len(word) == 6 and word.isalnum()] 

Endlich: ein zufälliges Wort in der Liste, verwenden Sie die choice Funktion aus dem random module:

import random 

random_word = random.choice(six_letter_words) 
0

ich denke, die fo llowing tut was Sie wollen und beantwortet effektiv alle Ihre Unterfragen.

Beachten Sie, dass split() den Inhalt der Datei in eine Liste von Wörtern unterteilt, die durch Leerzeichen getrennt sind (z. B. Leerzeichen, Tabulatoren und Zeilenumbrüche).

Beachten Sie auch, dass ich eine word.txt Datei mit nur diese drei Wörter aus Ihrer Frage zur Veranschaulichung verwendet habe.

import random 
import os 

with open(os.path.expanduser('~James/word.txt'), 'r') as infile: 
    words = [word for word in infile.read().split() if len(word) == 6] 

print(words) # -> ['castle', 'manmen'] 
print(random.choice(words)) # -> manmen 
Verwandte Themen