J'ai une chaîne d'entrée, dont certaines ne contiennent pas de mots réels (par exemple, elle contient des formules mathématiques telles que x^2 = y_2 + 4). Je voudrais un moyen de diviser ma chaîne d'entrée en fonction de l'existence d'une sous-chaîne de mots anglais réels. Par exemple:

Si ma chaîne était:

"Taking the derivative of: f(x) = \int_{0}^{1} z^3, we can see that we always get x^2 = y_2 + 4 which is the same as taking the double integral of g(x)"

Alors je voudrais qu'il soit divisé en une liste comme:

["Taking the derivative of: ", "f(x) = \int_{0}^{1} z^3, ", "we can see that we always get ", "x^2 = y_2 + 4 ", "which is the same as taking the double integral of ", "g(x)"]

Comment puis-je accomplir cela? Je ne pense pas que regex fonctionnera pour cela, ou du moins je ne connais aucune méthode dans regex qui détecte les sous-chaînes les plus longues de mots anglais (y compris les virgules, les points, les points-virgules, etc.).

0
graphtheory12345678 10 oct. 2020 à 07:01

1 réponse

Meilleure réponse

Vous pouvez simplement utiliser la bibliothèque pyenchant comme mentionné dans ce message :

import enchant
d = enchant.Dict("en_US")
print(d.check("Hello"))

Production:

True

Vous pouvez l'installer en tapant pip install pyenchant dans votre ligne de commande. Dans votre cas, vous devez parcourir toutes les chaînes de la chaîne et vérifier si la chaîne actuelle est un mot anglais ou non. Voici le code complet pour le faire :

import enchant
d = enchant.Dict("en_US")

string = "Taking the derivative of: f(x) = \int_{0}^{1} z^3, we can see that we always get x^2 = y_2 + 4 which is the same as taking the double integral of g(x)"

stringlst = string.split(' ')
wordlst = []

for string in stringlst:
    if d.check(string):
        wordlst.append(string)

print(wordlst)

Production:

['Taking', 'the', 'derivative', 'we', 'can', 'see', 'that', 'we', 'always', 'get', '4', 'which', 'is', 'the', 'same', 'as', 'taking', 'the', 'double', 'integral', 'of']

J'espère que cela aide!

2
Sushil 10 oct. 2020 à 04:11