2nd answer 1st - saving data in user data.
Here's an interesting idea I got from a guy called base80 :
In XPresso there's a node that can measure the length of a string ie how many characters (including spaces) are in a phrase. But what if the phrase was 'this phrase has 35 characters in it' and you were getting the '35' from XPresso? That would mean connecting the output from the 'length' node at the end the chain of nodes, back to the input at the LHS. Output to input is not allowed in XPresso, because it would create problems, especially for noobs - but looping in programming is one of the most powerful tools.
The answer is what base80 called his 'dirty proxy trick' - you get the length from the node, write it to a user data value (at the end) and read it back (at the start). See file
https://www.dropbox.com/s/ax4dbteq3ayve7f/base80trick.c4d?dl=1
Using math add, I've made the string 'this phrase has 29 characters'. The '29' is auto generated. If you edit the 1st string to read 'did you know that this phrase has ... etc', and either press 'a' to reload (or jiggle the playhead) you get
'did you know that this phrase has 47 characters'.
That should amuse you while I write some Python for your 1st question.