1
votes

Accéder aux mots par index en python

Je ne sais pas si c'est possible mais j'essaie d'accéder à des mots (pas à des caractères individuels) à partir d'une chaîne séparée par des index et de les stocker dans un dictionnaire. Si cela ne peut pas fonctionner, veuillez avoir une autre suggestion sur la façon d'obtenir le même résultat. Voici mon code pour le moment:

def main():
if len(argv) != 2:
    print("usage: python import.py (csv file)")
    exit(0)


db = SQL("sqlite:///students.db")

file = open(argv[2], 'r')
csv_file = DictReader(file)

for row in csv_file:
    names = row['name']
    for i in names:
        word = i.split()

  # what the csv looks like
  name,house,birth
  Adelaide Murton,Slytherin,1982
  Adrian Pucey,Slytherin,1977
  Anthony Goldstein,Ravenclaw,1980
   
  # what i want it to look like
  first name,middle name,last name,house,birth
  Adelaide,None,Murton,Slytherin,1982
  Adrian,None,Pucey,Slytherin,1977
  Anthony,None,Goldstein,Ravenclaw,1980 
       


2 commentaires

Il serait utile que vous fournissiez un contexte tel que la structure de votre CSV et un exemple de ce à quoi ressemblerait votre structure de données finale. Cherchez-vous à conserver le dictionnaire par mots et valeurs représentant une liste de lignes CSV contenant la clé particulière? Si tel est le cas, vous pouvez énumérer les données et utiliser setdefault pour ajouter le mot en tant que clé s'il n'existe pas encore et ajouter l'index actuel du générateur. Nous pouvons vous aider avec un peu plus de contexte. :)


J'ai mis à jour le code pour afficher la structure du fichier csv et à quoi je veux qu'il ressemble par la suite


3 Réponses :


0
votes

S'il y a une virgule entre les mots, vous pouvez faire words = i.split (',') ou tout ce que le délimiteur est passé en argument à split () < / code>


0 commentaires

0
votes
sentence = 'This is an example'  # string: 'This is an example'
words = sentence.split()         # list of strings: ['This', 'is', 'an', 'example']
At this point you can get a specific word by calling its index, or loop through them like for word in words:.I'm not sure about the SQL portion of your code but it looks like you're already looping through the words when you do for i in names:.

1 commentaires

cela signifie-t-il que cette syntaxe est correcte: `... names = row ['name']. split () if len (names) == 2: name_column = {'first name' = name [0]} ...



0
votes

Vous pouvez essayer avec ce code

def create_word_index(filenames, rare_word_flag=False):
    word_index, word_count, single_words = {}, 0, []  # original : word_count = 0

    ## Handle word index and word count
    for idx, filename in enumerate(filenames):
        with open(filename) as f:
            for sentence in f.readlines():
                words = sentence.strip().split()
                for word in words:
                    # word = process(word)  # Do more preprocessing stuff here if you need
                    if rare_word_flag and (word in single_words):
                        word_index[word] = 1
                        continue
                    if word in word_index:
                        continue
                    word_index[word] = word_count
                    word_count += 1
    return word_index, word_count


filenames = ["haha.txt"]
word_idx, word_count = create_word_index(filenames, False)
print(word_idx)
print(word_count)

# haha.txt file:
name=huhu, check=ok
name=haha, check=not good


0 commentaires