12
votes

Ne divisez pas des mots à double cotisation avec Python String Split ()?

Lorsque vous utilisez la fonction de la tringle de Python String (), quelqu'un a-t-il un astuce tiftys pour traiter les articles entourés de guillemets en tant que mot non divisé?

Dis que je veux diviser seulement sur l'espace blanc et j'ai ceci : P>

['A', 'B', '"C"', 'DE', '"FE"', '"GH I JK L"', '""', '""', '"O P   Q"', 'R']


0 commentaires

3 Réponses :


0
votes

Je vous suggère de rechercher avec re pour le modèle "[^"] * "et appliquez String.Split uniquement sur les pièces restantes. Vous pouvez implémenter une fonction récursive qui traite toutes les pièces de chaîne pertinentes.


0 commentaires

35
votes

Vous ne pourrez pas obtenir ce comportement avec str.split () . Si vous pouvez vivre avec l'analyse assez complexe, il fait (comme ignorer des citations doubles précédées d'une barre oblique), shlex.split () pourrait être ce que vous recherchez: xxx


2 commentaires

Merci Sven --- C'est exactement ce que je cherche!


génial, très utile. Merci!



3
votes

@ROB: Pourquoi sans expulser si la solution Regexp est si simple? XXX


1 commentaires

@Paplog - malgré souvent la solution Easefront Easy, je n'ai pas encore rencontré personnellement un cas où Regex n'avait pas plus de coûts à long terme. En ce qui concerne ce cas particulier, j'étais assez certain que c'était un problème résolu et je pouvais juste le trouver - semble que Sven m'a pointé dans la bonne direction avec SHLEX.