python - 如何将元组保存到 sys.stdin 中的某个变量
问题描述
能否请您帮助如何使用 sys.stdin 捕获数据
例如,我想将传入的行保存到列表 l。
传入数据是元组:('sometext', 1, 0), ('sometext', 0, 5)
import sys
l = list()
for line in sys.stdin.readlines():
l=sys.stdin.read()
print(l)
解决方案
sys.stdin
从(或input()
就此而言)读取只是返回一个字符串;如果该字符串应转换为其他内容,则需要对其进行解析或以其他方式处理它。
如果您期望 Python 表达式,您可以使用ast.literal_eval()
来解析每一行,但是对于像这样的简单格式,您可以简单地在需要转换的字段上split
调用int()
或其他一些转换函数。
l = list()
for line in sys.stdin:
if not line.startswith("(") or not line.endswith(")\n"):
raise ValueError("Not valid input: %s" % line)
# properly speaking we should only trim one each of left and right paren
fields = [x.strip() for x in line.lstrip("(").rstrip(")\n").split(",")]
if len(fields) != 3:
raise ValueError("Wrong number of fields: %s" % line)
l.append(tuple([fields[0].strip('"')] + list(map(int, fields[1:]))))
这是粗略和不雅的,所以至少应该说服您可能有更好的解决方案来解决您的问题(也许只需阅读 CSV 或 JSON,这样您就不必自己进行所有这些解析?)
推荐阅读
- java - 带队列的 RoundRobin 算法
- java - Proguard 保持枚举常量名称
- sql - Spark中聚合时的条件
- angular - 如何在 mat-tab 中的活动选项卡上触发功能
- python - 访问 pd.TimeSeries 的频率属性
- python - 如何使用 beautifulsoup 检查字符串是否存在
- node.js - 如何使用 npm run dev (laravel5.4) 解决错误
- google-apps-script - 谷歌应用脚本将字符串转换为对象
- webrtc - 如何检查 webrtc 对等点是否以 p2p 模式或中继模式通信
- javascript - RangeError:array.slice 超出了最大调用堆栈大小