I am trying to sift through a Word document and complete some quick grammar checks. I currently have code that splits the document into words using python-docx and then I run my grammar checks on the words/sentences based on specific criteria. I then past the correct grammar back into the document using the .add_run function.
The issue I'm having is when I past the correct grammar back into the document, it doesn't save the font style (Bold and Italics), so when I paste words in, it just shows up as text without the Bold and Italics when I want to keep it. 
My question is, is there any way in python (using python-docx or any other package) to save the font details (mainly bold and italics) for each word so that I can use code to bold or italicize words accordingly?
I've already tried using the .style function for paragraphs and runs, but the issue that arises is that the style per paragraph is unclear on what is being bolded and italicized, and I don't want to paste a whole paragraph, just the wrong words.
I've also tried looking at the .style for each run, but it is unreliable since runs often splits a word into 2 when it shouldn't. ("Mario" might become  2 different runs "M" and "ario" even when there isn't any style change).
I've also tried looking at other packages but haven't found anything helpful.
if the input is "Stack Overflow is a question and answer site for professional and enthusiast programmers."(with "question" and "answer" is bold and italicized),
the expected output is same sentence with the word "question" and "answer" bold and italicized
the actual output is the same sentence but no bold or italics in it whatsoever.
This is a challenging problem in the general case:

Character-formatting can be applied at various levels (directly, style, document-default, etc.) and determining the effective character formatting for a particular run is therefore not a single-step process.
A given word can partly appear in more than one run and not all parts of the word are guaranteed to be complete runs, for example a sequence of five r|uns could ab|so|lut|ely be split like this"

So you have your work cut out for you. A general-case solution might have a Word object for each word, with a sequence of (run, offset, length) tuples for each which, with the proper processing, could give you the information you need. You would probably assume that the formatting of the first character of the word could safely be applied to the whole word. In that case, you could just have a sequence of (word, run) pairs, where the run item is the one in which the first character of word appears in.
As a start I would look at run.bold and run.italic to get the most common formatting and then work your way up from there.
How to use python-docx or any other similar package to save font style (bold and italic) from Word document