2 votes

Ajoutez Virgula devant chaque mot

J'ai un fichier texte de plus de mille lignes, et pour un certain processus j'ai besoin de séparer les mots par des virgules. Je voulais une aide pour développer cet algorithme en python puisque je débute dans le langage

Entrada

input phrase of the file to exemplify

Saída

input, phrase, of, the, file, to, exemplify

J'essaie comme ça :

import pandas as pd

 sampletxt = pd.read_csv('teste.csv' , header = None)
 output = sampletxt.replace(" ", ", ")

 print output

3voto

Eqomatic Points 369
the_list = entrada.split(" ") # take input & make a list of all values, separated by " "
saida = the_list.join(", ") # join all elements with ", "

3voto

Keith Cargill Points 62

Votre ligne est probablement juste une chaîne, donc vous pouvez utiliser :

line.replace(" ",", ")

1voto

rachid el kedmiri Points 1080

Pour des raisons de complexité, vous devriez remplacer l'espace directement par une virgule, plutôt que de parcourir la phrase plusieurs fois.

the_list = entrada.replace(' ', ', ')

1voto

peyo Points 383

D'abord, vous devez lire votre entrée ligne par ligne . Il suffit alors d'utiliser str.replace() comme tel :

sampletxt = "input phrase of the file to exemplify"
output = sampletxt.replace(" ", ", ")

Et vous avez terminé.

1voto

MedAli Points 6050

Sur la base de l'exemple de code que vous avez ajouté, la question à laquelle vous essayez de répondre est de savoir comment remplacer ' ' con ', ' pour chaque ligne d'un pandas dataframe .

Voici une façon de le faire :

import pandas as pd

sampletxt = pd.read_csv('teste.csv' , header = None)
output = sampletxt.replace('\s+', ', ', regex=True)
print(output)

Ejemplo:

In [24]: l
Out[24]: 
['input phrase of the file to exemplify',
 'input phrase of the file to exemplify 2',
 'input phrase of the file to exemplify 4']

In [25]: sampletxt = pd.DataFrame(l)

In [26]: sampletxt
Out[26]: 
                                         0
0    input phrase of the file to exemplify
1  input phrase of the file to exemplify 2
2  input phrase of the file to exemplify 4

In [27]: output = sampletxt.replace('\s+', ', ', regex=True)

In [28]: output 
Out[28]: 
                                                0
0     input, phrase, of, the, file, to, exemplify
1  input, phrase, of, the, file, to, exemplify, 2
2  input, phrase, of, the, file, to, exemplify, 4

Ancienne réponse

Vous pouvez également utiliser re.sub(..) comme suit :

In [3]: import re

In [4]: st = "input phrase of the file to exemplify"

In [5]: re.sub(' ',', ', st)
Out[5]: 'input, phrase, of, the, file, to, exemplify'

re.sub(...) est plus rapide que str.replace(..)

In [6]: timeit re.sub(' ',', ', st)
100000 loops, best of 3: 1.74 µs per loop

In [7]: timeit st.replace(' ',', ')
1000000 loops, best of 3: 257 ns per loop

Dans le cas où plusieurs espaces séparent deux mots, la sortie de toutes les réponses basée sur str.replace(' ',',') aura tort. Par exemple

In [15]: st
Out[15]: 'input phrase of the file to  exemplify'

In [16]: re.sub(' ',', ', st)
Out[16]: 'input, phrase, of, the, file, to, , exemplify'

In [17]: st.replace(' ',', ')
Out[17]: 'input, phrase, of, the, file, to, , exemplify'

Pour résoudre ce problème, vous devez utiliser une expression régulière (regex) qui correspond à un ou plusieurs espaces, comme suit :

In [22]: st
Out[22]: 'input phrase of the file to  exemplify'

In [23]: re.sub('\s+', ', ', st)
Out[23]: 'input, phrase, of, the, file, to, exemplify'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X