0
votes

Python: Créez une phrase dans une liste de mots (il ne devrait y avoir aucun espace avant la virgule et la période)

La sortie souhaitée: Si personne ne l'aimait, il a probablement eu du mal à s'aimer. xxx

Cependant, cela ne fonctionne pas. Comment puis-je atteindre des virgules et des périodes dans une liste?


1 commentaires

Un Un exemple de reproductible minimal n'est pas que le code et la spécification brisés. Dites pourquoi le code devrait travailler et trouver le premier point où l'état n'est pas ce que vous attendez & le montrer et dire ce que vous attendez et pourquoi.


6 Réponses :


0
votes

Utiliser remplacer pour corriger la période et la virgule xxx xxx


1 commentaires

Pourquoi gardez-vous la boucle?



0
votes

en utilisant str.join () avec remplacer () : xxx

sortie: xxx


0 commentaires

0
votes

premier, mots [i] == "". ou "," code> sera toujours vrai. Donc, vous entrez toujours dans Continuer code> qui est la raison pour laquelle vous ne pouvez rien imprimer. Vous devriez le changer en Word == "". ou Word == "," code>

second, vous pouvez simplement itérer mot dans une boucle. p>

Code correct: p>

words = ["if", "nobody", "loved", "him", ",", "he", "probably", "struggled", "to", "love", "himself", "."]

sentence = ""
for word in words:
    if word == "." or word == ",":
        sentence += word
    else:
        sentence += " "
        sentence += word
print(sentence.strip().capitalize())


0 commentaires

1
votes

Vous pouvez utiliser une regex, vous devez simplement mettre les caractères qui n'ont pas besoin d'espace, dans le support [.,;] , il est plus facile de gérer de nouveaux cas et plus court donc xxx

le regex (?: ([.,;])) correspondre à un espace suivi de l'un des caractères à l'intérieur du support et remplacez par ce char seulement (sans l'espace afin)


0 commentaires

0
votes

Nous pourrions définir des règles de ponctuation, puis les appliquer tout en fusionnant des mots un par un dans une phrase existante. L'avantage de la définition de la règle de ponctuation est que nous pourrions alors changer de langue de manière plus simple que si la logique était codée dur.

In [3]: fr_punctuation_rules = {'.': '.', ',': ',', '!': ' !', '?': ' ?'}
   ...: fr_words = ["si", "personne", "ne", "l'aime", ",", "comment", "pourrait-il", "s'aimer", "lui-même", "?"]
   ...: fr_sentence = sentence_language(fr_punctuation_rules)
   ...: fr_sentence(fr_words)

"Si personne ne l'aime, comment pourrait-il s'aimer lui-même ?"


0 commentaires

0
votes

Vous pouvez utiliser une concaténation à chaîne également et une autre liste pour les signes que vous ne voulez pas être en dernière phrase, quelque chose comme ceci: xxx


0 commentaires