Efficient human readable timedelta
Use a ternary operator in "s"[seconds==1:].
Use a generator expression to replace the xstr = "%s... lines.
The two for loops should use enumerate(), i.e. they could be for s, i in range(...).
The two for loops should be moved into a for _ in range(2):.
i is preferred over x when using an i​ncrementing i​ndex counter.
The filtering of the redundant strings which the for-loop does could be done earlier so that the number to string code can be modified but the filtering code will not require adjustments.


PS: I have implemented a similar function here:

    days, rem = divmod(seconds, 86400)
    hours, rem = divmod(rem, 3600)
    minutes, seconds = divmod(rem, 60)
    if seconds &lt; 1:seconds = 1
    locals_ = locals()
    magnitudes_str = ("{n} {magnitude}".format(n=int(locals_[magnitude]), magnitude=magnitude)
                      for magnitude in ("days", "hours", "minutes", "seconds") if locals_[magnitude])
    eta_str = ", ".join(magnitudes_str)