Je suis tout nouveau en python et je demanderais de l'aide.
J'ai un fichier texte sur lequel je dois faire un certain nettoyage, à savoir que je dois supprimer certains modèles de chaîne des lignes. Ci-dessous ce que j'ai fait jusqu'à présent:
f = open("myfile.txt", "r")
mylist = []
for i in f:
mylist.append(i.strip().split('\t')) #removing newlines '\n'
for i in range(0, len(mylist)): # iterate the list to find the string pattern
#if "@@" in mylist[i]: # I have tried this as well
if mylist[i].count('@@') > 0:
print(mylist[i])
else:
print('NOT')
Ce code ne trouve pas le modèle de chaîne que je veux.
4 Réponses :
Vous pouvez essayer la fonction suivante: find () . Il renvoie la position où se trouve la sous-chaîne.
if ("@@".find(mylist[i]) != -1):
print(mylist[i])
J'aurais fait beaucoup plus simple:
for line in f.readlines():
if '@@' in line:
print(line)
else:
print('NOT')
vous pouvez essayer ceci pour supprimer le motif directement. Pourquoi ajouter plus de complexité en recherchant d'abord puis en supprimant?
with open('your_file_path_here','r') as f:
print([mystr.replace("@@",'') for mystr in f.readlines()])
Vous pouvez également le faire en une seule ligne comme suit:
mylist = []
for i in f:
# you can use readline() function here
mylist.append(i.strip().split('\t')) #removing newlines '\n'
my_new_list = [mystr.replace("@@",'') for mystr in mylist]
le décapage pour supprimer \ n semble redondant, pourquoi ne pas utiliser readlines () ???
ma principale préoccupation était dans la fonction replace () où l'OP a besoin d'aide. Cependant, votre optimisation est beaucoup plus continentale.
import re
data = [line
for line in f.readlines()
if re.findall(r'@@', line)] # iterate the list to
Essayez
for i dans f.readlines ():au lieu defor i in fVous n'affichez que du code qui ne fonctionne pas sans aucune explication sur ce que ce code est censé faire. À quoi ressemblerait exactement le motif? En particulier, le
@@sera-t-il toujours isolé par des espaces, ou pourrait-il faire partie d'un «mot» plus long?