As already stated by others this is almost certainly an import problem and should be addressed at that level. For example:
ImportString["12,345 678,910", "Table", "NumberPoint" -> ","]
{{12.345, 678.91}}
See "Table" format documentation for more information.
Nevertheless the proposed replacement problem itself is mildly interesting.
Here is one method:
{0, "", 0, 1, 3, 93345, 27, 763212, 3} //. {a___, x_Integer, y_Integer, b___} /; y > 9999 :> {a, x + y/10`^IntegerLength[y], b}
{0, "", 0, 1, 3.93345, 27.7632, 3}
This would be inefficient for long lists because ReplaceRepeated (short from //.) will rescan the entire expression after each individual replacement. A better approach might be to something like this, the difference being that the replacement is only applied to the parts that haven't already matched:
f = # /. {a___, x_Integer, y_Integer, b___} /; y > 9999 :> {a, x + y/10`^IntegerLength[y], f@{b}} &; f @ {0, "", 0, 1, 3, 93345, 27, 763212, 3} // Flatten
{0, "", 0, 1, 3.93345, 27.7632, 3}
Another approach for better efficiency would be to section the list with Partition and apply the replacement to those section, then merge with Flatten. A partition length of three is needed to avoid separating the parts of any number.
Replace[ Partition[{0, "", 0, 1, 3, 93345, 27, 763212, 3}, 3, 3], {a___, x_Integer, y_Integer, b___} /; y > 9999 :> {a, x + y/10`^IntegerLength[y], b}, {1} ] ~Flatten~ 1
{0, "", 0, 1, 3.93345, 27.7632, 3}
In a different direction you could use string processing which is optimized for this kind of replacement, but other aspects of your expression can change during the conversion.
s = ToString[{0, "", 0, 1, 3, 93345, 27, 763212, 3}, InputForm] StringReplace[s, int : DigitCharacter .. ~~ ", " ~~ dec : Repeated[DigitCharacter, {5, ∞}] :> int ~~ "." ~~ dec ] // ToExpression
{0, "", 0, 1, 3.93345, 27.7632, 3}
Import[]so that commas are interpreted as decimal points... $\endgroup$