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
3 Réponses :
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>
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:.
cela signifie-t-il que cette syntaxe est correcte: `... names = row ['name']. split () if len (names) == 2: name_column = {'first name' = name [0]} ...
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
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