I have a list of bond spreads, and I want to rank/weight them based on the standard deviations of those spreads. There are 42 samples, and so far I have
$$rank=\frac{x-\bar{x}} {\sigma}$$
to pull the number of standard deviations from the mean that the data point comes from. From there, I would like to weight those deviations (such that the largest negative deviation has the lowest weighting, while the largest positive deviation has the highest weighting) such that the weightings sum to 100%, with no negative values.
Without knowing what the goal of the weighting is or why it should not be negative it is hard to answer, but if you just want to make it non-negative you can take the exponent of the rank you proposed ($e^{rank}$). However this will scale the values in a non-linear way, which may or may not be appropriate for your specific needs.