Dans Word, le gras correspond à Aucun. Est-ce que ça compte comme gras ?
Un format direct None signifie non défini et non False. Seuls le formatage direct et les chaînes de styles de caractères explicites sont vérifiés ici ; Aucun n'est renvoyé lorsqu'aucune valeur n'est trouvée, laissant les styles de paragraphe, les valeurs par défaut du document et les règles de bascule OOXML pour une analyse plus approfondie, et ne peut pas être appelé un calculateur de style complet et efficace.
bold est Aucun dans Word. Est-ce que ça compte comme gras ? Conclusion en une phrase
Si vous utilisez python-docx pour vérifier par lots le format des documents Word, vous avez peut-être rencontré ce doute : run.bold renvoie None. Est-ce audacieux, pas audacieux, ou autre chose ? Ce problème sera rencontré lors de la révision du format, du tri par lots ou de la vérification de la mise en page avant la traduction. Une erreur de jugement fausserait la conclusion du format.
Cet article est destiné aux développeurs et ingénieurs documentaires qui doivent écrire leurs propres scripts pour analyser le style .docx. Après avoir lu, vous comprendrez pourquoi None n'est pas égal à False, apprendrez à utiliser des fonctions récursives pour revenir en arrière le long de la chaîne de style et saurez quels jugements peuvent être fiables et lesquels doivent être laissés à l'examen humain.
Dans Word, le gras signifie Aucun. Est-ce que ça compte comme gras ? Conclusion en une phrase
run.bold est None, ce qui signifie qu'il n'est pas défini au format direct, ce qui ne veut pas dire qu'il n'est pas en gras. Vous devez continuer à rechercher vers le haut le style de paragraphe, la valeur par défaut du document, etc. Le code de cet article vérifie uniquement le formatage direct et les chaînes de styles de caractères explicites et ne constitue pas un calculateur de style valide et complet.
| votre situation | Pratiques recommandées | raison |
|---|---|---|
run.bold renvoie None | Continuez la recherche le long de la chaîne de styles de caractères, ne la traitez pas directement comme False | None signifie non défini, non négatif |
run.bold Retour False | Traiter comme annulant explicitement la mise en gras | Remplacement explicite correspondant à <w:b w:val="0"/> |
| Aucune valeur trouvée dans la chaîne de styles | Marquer pour révision manuelle | Peut impliquer des paramètres non résolus tels que docDefaults ou les polices de thème |
| Nom du style Alias chinois | Bloquez et signalez les erreurs, ne les gérez pas en silence | python-docx a un support instable pour les noms de styles localisés |
Éléments de liste complexes ou fichiers .doc convertis, protégés et modifiés par macro | Sous réserve d'un examen manuel | Les résultats de l'analyse peuvent ne pas correspondre à la représentation visuelle |
Quel problème doit être résolu en premier dans cet article ?
Le format direct None signifie non défini et non False. Seuls le formatage direct et les chaînes de styles de caractères explicites sont vérifiés ici ; None est renvoyé lorsqu'aucune valeur n'est trouvée, laissant le soin aux styles de paragraphe, aux valeurs par défaut du document et aux règles de bascule OOXML pour une analyse ultérieure, et ne peut pas être appelé un calculateur de style valide complet.
Exemple de composition autonome
Voir la liste d'importation pour les dépendances. Le code construit les entrées en mémoire ; les enregistrements d'exécution sont fournis séparément et ne représentent pas une garantie de tous les fichiers réels.
from docx import Document
from docx.enum.style import WD_STYLE_TYPE
def partial_bold(run):
if run.bold is not None:
return run.bold
style, seen = run.style, set()
while style is not None and style.style_id not in seen:
seen.add(style.style_id)
if style.font.bold is not None:
return style.font.bold
style = style.base_style
return None
doc = Document()
style = doc.styles.add_style("DemoBold", WD_STYLE_TYPE.CHARACTER)
style.font.bold = True
run = doc.add_paragraph().add_run("Example")
run.style = style
assert partial_bold(run) is True
run.bold = False
assert partial_bold(run) is False
plain = doc.add_paragraph().add_run("Plain")
assert partial_bold(plain) is None
Comprendre la logique à trois états de l'héritage de style
L'attribut gras dans Word a trois états, qui doivent être compris séparément :
- Gras explicite : sélectionnez le texte dans l'interface et cliquez sur le bouton gras.
<w:b/>est écrit au format XML etrun.boldestTrue. - Annulation explicite : pour annuler spécifiquement un certain effet de style qui doit être en gras, écrivez
<w:b w:val="0"/>dans le XML, etrun.boldestFalse. - Non défini : le texte se trouve simplement dans le paragraphe sans aucune balise grasse directe. Le fait de mettre en gras ou non dépend de la définition de style associée,
run.boldestNone.
None signifie « veuillez rechercher », et non « non ».
Pourquoi devons-nous retracer la chaîne de style ?
Cette conception vise à économiser la taille du fichier et à maintenir la cohérence du format. Comme l'indique la documentation officielle, les styles intégrés (Built-in Styles) ne sont même pas écrits dans styles.xml jusqu'à ce qu'ils soient utilisés, ils existent dans l'application Word en tant que « Styles latents ». Par conséquent, le code doit avoir la capacité de revenir en arrière sur la chaîne de styles plutôt que de s’appuyer uniquement sur les propriétés de l’objet Run lui-même.
Pour déterminer en toute sécurité si le texte est réellement en gras, nous devons écrire une fonction récursive qui traverse la chaîne d'héritage de style. Veuillez noter : le code suivant est une démonstration pédagogique qui a réussi la vérification de l'échantillon synthétique et est destinée à démontrer la logique de jugement à trois états. Les environnements de production réels doivent également gérer la protection des références circulaires, la résolution des espaces de noms et davantage de types d'attributs.
Critères d'acceptation et limites de révision manuelle
L'analyse automatisée ne peut pas émuler parfaitement le moteur de rendu de Word. Lorsque vous travaillez avec des documents par lots, une matrice d'acceptation claire doit être établie pour distinguer les situations où le code peut être fiable et celles où il doit être laissé aux humains.
| Observer les phénomènes | valeur de retour du code | rendu réel | décision de traitement | Note |
|---|---|---|---|---|
| Run.bold=Aucun, Style.bold=True | True | En gras | ✅ Passe automatique | Scènes d’héritage de style standard |
| Run.bold=False, Style.bold=True | False | Routine | ✅ Passe automatique | Suppression explicite, logique de code correcte |
| Run.bold=Aucun, Style.bold=Aucun | False | En gras | ⚠️ Une vérification manuelle est requise | Il est possible que les paramètres docDefault ou les paramètres de police de thème manquent |
| Le nom de style est un alias chinois | AttributeError | - | ❌ Blocage et signalement des erreurs | Python-docx prend en charge des noms de style localisés instables |
| Texte dans les éléments de la liste complexe | True/False | Incertain | ⚠️ Une vérification manuelle est requise | L’interaction entre le style de liste et le style de paragraphe est extrêmement complexe |
Portée non applicable
Cette logique d’analyse s’applique uniquement au format standard .docx. Pour les fichiers convertis à partir de .doc, des documents protégés ou des documents modifiés dynamiquement avec des macros, les résultats de l’analyse de code peuvent différer considérablement de la présentation visuelle. De plus, le code démontre la logique d’extraction des attributs, pas la disposition de bout en bout ni la restauration. Si l’objectif est de reproduire précisément la disposition, se fier uniquement aux valeurs des attributs ne suffit pas.
📊 Comparaison des noyaux
| Statut | Écriture en formatage direct | run.bold Retour | Signification |
|---|---|---|---|
| Le style explicite est audacieux | <w:b/> | True | Épaississez-le directement |
| Explicitement annulé | <w:b w:val="0"/> | False | Couverture audacieuse dans le style |
| Pas mis en place | Pas d’inscriptions en gras | None | Continuez à chercher le long de la chaîne de styles |
🎯 Quelle méthode te convient ?
Si tu veux vérifier si le texte est en gras
Remontez la chaîne de styles ; ne lisez pas seulement run.bold.
Si tu n’as besoin que de lire le format direct
True et False peuvent être directement fiables, mais None nécessite un jugement supplémentaire.
Si tu veux reproduire précisément la disposition
L’extraction de propriétés est le point de départ ; elle doit aussi être combinée avec les résultats de rendu et les vérifications manuelles.
Si vous traitez avec des fichiers .doc, protégés ou modifiés en macro
Premièrement, gérez-le selon le processus de revue manuelle ; les résultats du code sont uniquement à titre de référence.
❓ Foire aux questions (FAQ)
1. run.bold signifie-t-il que None n’est pas en gras ?
Non. None signifie que le format direct n’est pas défini et qu’il faut continuer à chercher le long de la chaîne de styles.
2. Ce code peut-il reproduire entièrement la mise en page de Word ?
Non. Le code démontre la logique d’extraction d’attributs, pas la disposition de bout en bout ni la restauration.
3. Que faire si vous tombez sur un nom de style chinois ?
Python-docx prend en charge les noms de style localisés instables ; la matrice d’acceptation gère et déclare les blocs et les erreurs.
4. Que devriez-vous faire avant de manipuler des documents importants ?
Conservez les originaux et vérifiez les résultats selon les limites et les éléments d’acceptation spécifiés dans le document.
Références et lectures complémentaires
- Comprendre les styles - Documentation python-docx
- Norme ECMA-376 : formats de fichiers Office Open XML
Utilisez cette liste de contrôle pour la traduction de documents
La traduction de mots mélange facilement les problèmes de contenu avec les problèmes de mise en forme. Laisser des coches telles que styles, en-têtes et tableaux dans la liste de livraison permet aux correcteurs de savoir où vérifier.
OmniDoc (entrée produit) propose des portails de traduction de documents multi-formats, et le site officiel introduit des OCR, des glossaires et des fonctionnalités de référence bilingues. Pour les équipes qui veulent partir directement des fichiers, c’est une voie à évaluer avec de vrais échantillons. Veuillez utiliser le fichier anxieux que vous avez le droit de télécharger et vérifier les résultats de la liste de contrôle de cet article. Cela ne prétend pas qu’OmniDoc utilise la bibliothèque open source ou les algorithmes internes de cet article, ni ne remplace les tests de performance produit par des exemples.
📝 Résumé
None signifie « non défini », pas « non » ; en grasset, continuez à revenir en arrière le long de la chaîne de styles. En cas de doute, la matrice d’acceptation est confiée à une revue manuelle.


