The most likely answer is that you don't have strings in your list, or that you don't have a list.
my_list = ['hello world']
string_thing = my_list.pop()
print string_thing[:4]
will work just fine, assuming that string_thing has sufficient length.**
You should post your error (exception with stack trace). If you're getting an index error, your list is empty. If you're getting a type error, you probably don't have a string.
An immediate solution would be to cast whatever comes out of the list to a string. This will work on almost anything* (it's how objects get printed), but might provide unexpected behaviour if you expected the items, themselves, to be strings
my_list = [123456789]
string_thing = str(my_list.pop())
print string_thing[:4]
It also isn't particularly pythonic, unless you're doing it for a good reason . If you expect them to be strings, you should probably figure out what's wrong, not hide the mistake.
A technical answer is that you don't actually need a string. You need something sliceable.I would not go down this route if I were you (or if I were me). If a generic or custom object is in this list, it might be relevant. It's also the reason that if you had something like a list of lists, the code might not raise an exception but wouldn't do what you want it to
Your solution doesn't make much sense in the context of your problem (though thank you for posting an attempt). Writing
''.join(my_list)
is something you may have seen elsewhere on the site; it certainly isn't what you want, but the easiest way to see that is to note that it will raise an exception if you don't have strings in the list... and if you have strings in the list then your original code would have worked. If that works but your original code doesn't then the only explanation is that the strings are not long enough to be spliced, but when joined they are.
What would help you more than the solution would be to include more direct information next time. For example, include a minimal example that reproduces your problem and the stack trace of the exception, and this wall of text will crop down to a few lines with a direct answer :) . For example, you say "string manipulation tools like new_var[:4]"... So I used "new_var[:4]" as my example. If you really meant a different "string manipulation tool", then I may have written something unhelpful
Footnotes
.* anything that does doesn't raise an exception on str or repr... which should be almost anything
.** Actually, even if it isn't sufficent length you might not have a problem.
print string_thing[:1000]
doesn't raise an exception, it just grabs as many characters as it can, up to 1000. Sort of useless and misleading in your case, but not "wrong"