python - 将列表中的所有元组组合成一个字符串
问题描述
我想将列表中的所有元组组合成一个字符串。我还需要在数字之间包含冒号,在数字和子午线之间包含空格。我的功能:
def create_time_list(filename):
f = open(filename,"r")
f.seek(0)
fchar = f.read(1)
if not fchar:
raise Exception("EmptyFileError")
f.seek(0)
list = []
for line in f:
subtuple = tuple(line.split())
for i in subtuple:
if len(i) > 2 or len(i) < 1 :
raise Exception("ImproperTimeError")
if not subtuple[0].isdigit() or not subtuple[1].isdigit() or (int(subtuple[0]) > 12) or (int(subtuple[1]) > 59):
raise Exception("ImproperTimeError")
list.append(subtuple)
return list
我的列表 :
[('4', '12', 'PM'), ('8', '23', 'PM'), ('4', '03', 'AM'), ('1', '34', 'AM'), ('12', '48', 'PM'), ('4', '13', 'AM'), ('11', '09', 'AM'), ('3', '12', 'PM'), ('4', '10', 'PM')]
输入 :
4 12 PM
8 23 PM
4 03 AM
1 34 AM
12 48 PM
4 13 AM
11 09 AM
3 12 PM
4 10 PM
我想如何输出:
['4:12 PM' , '8:23 PM' , '4:03 AM', '1:34 AM' , '12:48 PM' , '4:13 AM' , '11:09 AM' , '3:12 PM' , '4:10 PM']
解决方案
还有一种方式:
lst = [('4', '12', 'PM'), ('8', '23', 'PM'), ('4', '03', 'AM'), ('1', '34', 'AM'), ('12', '48', 'PM'), ('4', '13', 'AM'), ('11', '09', 'AM'), ('3', '12', 'PM'), ('4', '10', 'PM')]
list_out = [f"{h}:{m} {abr}" for (h, m, abr) in lst]
print(list_out)
结果:
['4:12 PM', '8:23 PM', '4:03 AM', '1:34 AM', '12:48 PM', '4:13 AM', '11:09 AM', '3:12 PM', '4:10 PM']
推荐阅读
- java - 使用流从 Java 8 中的文件中读取特定列,并将它们放入 2D 数组中
- angular - 如何使用打字稿修复“未找到规范”错误
- sql - 在 PostgreSQL 中搜索单词相似度?
- php - PHP除法精度
- java - Spring Boot:覆盖 CacheManager bean 使缓存相关属性不起作用
- php - 单击codeiginiter中的按钮时如何调用页面?
- python-3.x - 如何将巨大的距离矩阵放入内存中?
- xslt - 如何使用 XSLT 修改 SVG 属性
- java - 登录后 JDBC Tomcat auth 403 / 角色未考虑在内
- android - 如何使用 MediaRecorder.AudioSource.VOICE_UPLINK 录制通话