python-3.x - 将 23AC 等坐标转换为 (x,y)
问题描述
我有格式为 XXYY 的坐标矩阵,其中 XX 和 YY 是数字(0 到 10,000),但 Y 用字母表示(A = 1、B = 2、AA = 27 等等)。
点 = [“2B”、“29AA”、“18F”、“5AG”]
我怎样才能把它转换成类似的东西?
xy_points = [(2, 2), (29, 27), (18, 6), (5, 33)]
我的第一个想法是使用 int() 和 ord(),但是当 Y 坐标超过一个字母(AZ、AE、BE)时,事情会变得复杂。
A = ["1", "2", "3", "B"]
C = [list(map(lambda x: int(x) if x.isdigit() else ord(x) - 64, A))]
print(C)
我知道我可以一个字母一个字母地得到字符串,并使用基数 26 将其转换为整数。(即对于 AG 将是 (ord("A") - 64) * 26 + (ord("G") - 64)) . 但这将涉及很多行。
有没有一种简单的方法可以做到这一点?
解决方案
像这样的递归函数会:
def y(s):
if len(s) == 1:
return ord(s[0]) - ord('A') + 1
return y(s[-1]) + 26 * y(s[:-1])
print(y('B'), y('AA'), y('F'), y('AG'), y('AA'), y('BA'), y('ZZ'), y('AAA'))
这输出:
2 27 6 33 27 53 702 703
推荐阅读
- laravel - 具有请求验证和资源的 Laravel trait crud 控制器
- c++ - 为什么 GSM 模块数据信号使 PIR 运动传感器值达到 HIGH Arduino
- openstack - 基本部署后如何修改devstack
- java - process.waitFor() 不返回
- javascript - 这是什么['string'](); 在 javascript 中以及它是如何工作的;
- java - 如果在 if 条件中使用布尔方法,它会在返回 true 之前运行吗?
- sql - 在 json_agg 中显示和设置自定义列别名
- reactjs - ReactJS - Ant-Design v4 jalali(波斯)日期选择器问题
- windows - 使用 power shell 枚举当前目录的 ACL
- ios - Xcode 12 存档失败:ipatool 失败并出现异常:#
我已经为这个错误苦苦挣扎了 2 周,并且我尝试了几乎所有在线可用的解决方案。尝试导出临时 ipa 时,出现以下错误:
{ 代码 = 1061; description = "ipatool 因异常而失败:#<CmdSpec::NonZeroExitException: $ /Applic