Kal*_*een 1 python string integer for-loop list
我有一个包含 3 行的字符串,如下所示。
\n@ 544 000\n* 600 000\n\xe2\x80\x987000...\nRun Code Online (Sandbox Code Playgroud)\n我想将这些数字作为整数提取到列表中。
\nNumbers = [544000, 600000, 7000]\nRun Code Online (Sandbox Code Playgroud)\n我尝试过使用 for 循环来分割数据,如下所示。
\nnumbers = [] \nfor word in data.split():\n if word.isdigit():\n numbers.append(int(word))\nprint(numbers)\nRun Code Online (Sandbox Code Playgroud)\n但结果是
\n[544, 0, 600, 0]\nRun Code Online (Sandbox Code Playgroud)\n我在这里的轨道正确吗,还是我需要以其他方式分割它?
\n您可以使用str.isdigit()+ str.join()(从行中提取每个字符并使用 进行检查str.isdigit()。然后使用 加入每个数字str.join()):
s = """@ 544 000\n* 600 000\n\xe2\x80\x987000..."""\n\nfor line in s.splitlines():\n print("".join(ch for ch in line if ch.isdigit()))\nRun Code Online (Sandbox Code Playgroud)\n印刷:
\n544000\n600000\n7000\nRun Code Online (Sandbox Code Playgroud)\n或者作为列表:
\nnumbers = [\n int("".join(ch for ch in line if ch.isdigit())) for line in s.splitlines()\n]\nRun Code Online (Sandbox Code Playgroud)\n编辑:添加了对不包含数字的行的检查:
\nnumbers = [\n int(m)\n for line in s.splitlines()\n if (m := "".join(ch for ch in line if ch.isdigit())).isnumeric()\n]\nRun Code Online (Sandbox Code Playgroud)\n