If you want to delete the last 8 characters, or all of them if there are fewer than 8, you could do:
sed "s/.\{0,8\}$//; /^$/d" data_list.txt
No need for extended regex. This will clear as many characters as it can, but no more than 8. If that leaves an empty line, it'll be removed from the output.
If you need to clear any trailing whitespace (without including it in the 8 characters), you could do:
sed "s/.\{0,8\}[[:space:]]*$//" data_list.txt
I can only guess what the actual condition is for what should be removed at the end (e.g., everything after the underscore, or a number + the extension), but if you want to strip the file extension and any digits before it:
sed "s/[[:digit:]]*\..*$//" data_list.txt
Other answers have already shown how to remove everything after the underscore, so I won't repeat that.
sed 's/\(.*_\).*$/\1/' data_list.txt
. This will work even if you have multiple underlines '_' in one line, because sed is 'gready'.