Je travaille sur un nouveau projet et l'équipe à laquelle j'ai été affectée est tout Python. Je ne suis pas si compétent en python, alors je pensais que je me retournerais à Stackoverflow pour obtenir de l'aide. Ma partie du projet consiste à écrire un programme qui lit un fichier texte et crée des paires de tout ce qu'elle trouve dans le fichier un nombre et le mot qui précède ce numéro. La seule chose que j'ai faite est d'obtenir le programme pour lire le fichier texte et imprimer le tout. Mais je ne sais pas comment l'obtenir pour cracher des paires de dos qui est un nombre et le mot qui le précède. Toute aide est appréciée! Merci.
Contenu du fichier texte Exemple Exemple: p> sortie souhaitée: p> mon code jusqu'à présent: < / p> (logique qui envoie des paires de dos qui est un nombre et le mot qui le précède) h2> p>
3 Réponses :
Vous devez utiliser regex: sortie: p> démo pour le motif: https://regex101.com/r/bzzljs/1 p> Si vous vouliez un int Au lieu d'une chaîne pour le numéro, vous pouvez faire P> pairs = [(word, int(num)) for word, num in re.findall(r'(\w+)\s+(\d+)', contents)]
Essayez quelque chose comme ceci:
result = []
def is_num(text):
try:
float(text)
return True
except:
return False
with open('myfile', 'rw') as nf:
lines = nf.readlines()
for line in lines:
line_list = line.split()
for idx, item in enumerate(line_list):
if is_num(item):
result.append([item, line_list[idx-1])
Donc, je prends le fichier lu toutes les lignes comme une chaîne. remplacer "\ n" par un espace
Ensuite, je peux la diviser dans chaque mot en fractionnement dans chaque espace. Ensuite, en itérant à travers les mots divisés à tout moment est un entier positif, je l'imprime et son mot prédécesseur. (Je gère des entiers au début des lignes mais pas le début des fichiers) Remarque: ISDigit uniquement fonctionne est le numéro positif et aucune décimale n'est présente, essayez, sauf pour gérer les décimales p> p>
Bienvenue à! Veuillez donner un exemple de format de votre fichier, car il est assez difficile de vous aider s'il n'y a pas assez de détails.
Avez-vous des échantillons de données pour aider la communauté à s'adresser correctement à votre question?
Bienvenue sur Stackoverflow. Votre édition a grandement amélioré votre question: Félicitations. J'ai édité votre question un peu plus. Mais juste que voulez-vous dire par "récupérer des paires"? Voulez-vous un fichier texte de sortie qui ressemble à la partie de votre question maintenant? Voulez-vous dire que vous souhaitez que une fonction renvoie une liste de tunples de taille 2? En outre, par "numéro", vous voulez dire une chaîne de chiffres décimaux consécutifs représentant un entier ou souhaitez-vous inclure des nombres avec un point décimal ou d'autres types de chiffres?
Et si la chaîne numérique est la première sur une ligne? Voulez-vous le dernier mot de la ligne précédente?