1
votes

Comment appeler un mot spécifique à partir d'un fichier csv en utilisant python

Supposé que j'ai un fichier .csv avec deux colonnes A, B , donc si j'appelle la colonne A, ligne 3, comment imprimer les données de la colonne B, ligne 3. S'il vous plaît, aidez-moi car je suis débutant en code.

Je veux juste appeler une valeur d'entrée et imprimer la même valeur de ligne de la colonne suivante.

Voici mon code:

si "Bonjour" dans msg:

     with open('data.csv', "r") as f:
        reader = csv.reader(f)
        chat = {}

        for row in reader:
            key = row[0]
            chat[key] = row[1:]
    try:
        gotreply = chat[msg]
    except KeyError:
        gotreply = 'null'

    print(gotreply)

     if gotreply == 'null':
        print("Sorry! I didn't understand. I'm still learning.")
    else:
        print("Input Again")


2 commentaires

Il existe plusieurs façons de gérer un fichier csv. Pouvez-vous publier des exemples de données et un script qui tente une solution? Ce ne sont que quelques lignes de code pour lire un fichier dans une liste de lignes avec le module csv . pandas est également populaire. Trouvez des exemples, choisissez une méthode, puis donnez-nous un programme de base sur lequel travailler.


if "Hello" dans msg: avec open ('data.csv', "r") as f: reader = csv.reader (f) chat = {} pour ligne dans reader: key = row [0] chat [key] = row [1:] essayez: gotreply = chat [msg] sauf KeyError: gotreply = 'null' print (gotreply) if gotreply == 'null': print ("Désolé! Je n'ai pas compris. J'apprends encore . ") else: print (" Saisir à nouveau ")


4 Réponses :


0
votes

Je vous recommande de vous familiariser avec les Pandas en tant que une manière élégante d'analyser les données.

Exemple .csv:

   A  B
0  a  b
1  b  c
2  c  d
3  d  e    

où A et B sont les noms de vos colonnes.

pandas.read_csv () lira un .csv et le mettra dans un Dataframe. Consultez la documentation et essayez-le.

import pandas as pd

foo_df = pd.read_csv('/path/to/example.csv')

print(foo_df)

devrait retourner

A,B
a,b
b,c
c,d
d,e

À partir de là, il ne devrait plus être question de jeter un œil à la documentation à récupérer ce que vous voulez du dataframe.


1 commentaires

Salut merci, cela m'a donné une bonne idée sur l'appel d'une donnée, mais ma question appelait les données de la colonne B, à partir de l'entrée utilisateur i: l'utilisateur appellera à partir de la colonne A et obtient la sortie en tant que colonne B dans la même ligne.



0
votes

Je suis aussi un débutant et c'est mon premier message ici, donc je vais essayer de vous aider.

Tout d'abord, je suppose que votre fichier CSV a des en-têtes et je suppose que vos en-têtes sont appelés "A" et "B ".

import csv

with open('test.csv', mode='r') as csv_file:
    csv_reader = csv.reader(csv_file)
    row_count = 1
    for i in csv_reader:
        if row_count == 4:
            print(i[1])  # prints second column of third row
        row_count += 1

Il existe probablement un moyen plus efficace, mais je suis également nouveau dans le jeu.


0 commentaires

1
votes

Je ne sais pas exactement ce que vous demandez, mais vous pouvez faire

import pandas as pd

foo_df = pd.read_csv('files/example.csv')

if foo_df.A[2] == "c":
    print(foo_df.B[2])


1 commentaires

Salut merci, cela m'a donné une bonne idée d'appeler une donnée spécifique, mais ma question appelait les données de la colonne B, à partir de l'entrée utilisateur i: l'utilisateur appellera à partir de la colonne A et obtient la sortie en tant que colonne B de la même ligne.



0
votes

Quand j'ai commencé, j'avais aussi des doutes comme ça. Pandas Slicing vous sera utile.

Importez d'abord le module Pandas en tant que 'pd' (importez les pandas en tant que pd) car c'est la forme la plus utilisée et vous serez plus facile à adapter.

df.loc[2,'B']

Cela créera un exemple de données Frame ou simple 'df':

      A     B
0   tom     10
1   nick    15
2   juli    14
3   tony    12

En utilisant l'un des slicers les plus courants de pandas df.loc, vous pouvez obtenir le résultat souhaité:

import pandas as pd
data = [['tom', 10], ['nick', 15], ['juli', 14], ['tony', 12]]
df = pd.DataFrame(data, columns = ['A', 'B'])

Cela renverra la colonne 'B' ligne 3 comme vous l'avez mentionné. N'oubliez pas qu'en Python, le premier index commence à 0 et non à 1. C'est pourquoi nous utilisons «2» pour la ligne numéro trois.

J'espère que cela vous aidera.


1 commentaires

Salut Gustavo merci, cela m'a donné une bonne idée d'appeler une donnée spécifique, mais ma question appelait les données de la colonne B, à partir de l'entrée utilisateur i: l'utilisateur appellera à partir de la colonne A et obtient la sortie en tant que colonne B dans la même ligne.