你会如何格式化像这样长的一行呢?我想把它的宽度不超过80个字符:
logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes['url']], video.title))
这是我最好的选择吗?
url = "Skipping {0} because its thumbnail was already in our system as {1}."
logger.info(url.format(line[indexes['url']], video.title))
对于任何试图在长字符串上调用.format(),并且无法在不破坏后续.format(调用的情况下使用一些最流行的字符串换行技术的人,您可以使用str.format("", 1,2)而不是""。format(1,2).这让你可以用任何你喜欢的技术打破字符串。例如:
logger.info("Skipping {0} because its thumbnail was already in our system as {1}.".format(line[indexes['url']], video.title))
可以
logger.info(str.format(("Skipping {0} because its thumbnail was already"
+ "in our system as {1}"), line[indexes['url']], video.title))
否则,唯一的可能就是使用行结束的延续,我个人并不喜欢这样做。
无需加载额外包的解决方案:
def split_by_len(txt: str, l: int, sep: str or None='\n') -> str or list:
"""
txt: str text
l: split length (symbols per split)
sep: separate string or None for list of strs
"""
spl_list = [txt[i * l : i * l + l] for i in range(len(txt) // l + 1)]
return spl_list if sep==None else sep.join(spl_list)
示例1:
print(split_by_len(txt='XXXXX', l=2, sep='\n'))
XX
XX
X
示例2:
print(split_by_len(txt='XXXXX', l=2, sep=' '))
XX XX X
示例3:
print(split_by_len(txt='XXXXX', l=2, sep=None))
['XX', 'XX', 'X']