【问题标题】:Is there a away for the spilt method to split depending on what the user has entered in python?根据用户在 python 中输入的内容,是否有一种方法可以拆分溢出的方法?
【发布时间】:2021-07-04 19:22:42
【问题描述】:
user_lst = list(map(int,input("Numbers: ").split(" ")))

所以该行只是将列表映射到相应的int 值,但是split 方法有没有办法检测它是否在 a 或 " " 或任何其他字符上进行拆分?

例如,如果用户输入

1,2,3,4

1 2 3 4

1-2-3-4

我希望它按指定的拆分字符拆分列表。

我试过这个:

user_lst = list(map(int,input("Numbers: ").split(" ","-",",")))

但显然split 最多只接受两个参数。但即使只有两个参数,它仍然会给出错误。

我知道您可以使用一些 if 语句和索引来首先检查用户用来分隔它的内容,但我只希望它最多在一两行上完成。

【问题讨论】:

  • re 模块中的.split() 版本可以接受任意模式进行拆分 - 例如[- ,] 将匹配您提到的三个字符中的任何一个。
  • 当用户输入例如1,2,3,4时,告诉你,是分割字符的规则是什么?为什么分割字符不应该是,例如3,导致结果('1,2,', ',4')

标签: python python-3.x methods split mapping


【解决方案1】:

您可以只使用正则表达式 split 函数而不是基本 .split 方法:

import re

PATTERN = r"[-, ]"

user_lst = list(map(int, re.split(PATTERN, input("Numbers: "))))

您可以将PATTERN 更改为任何匹配您希望能够拆分的符号的正则表达式模式。更多关于正则表达式模式here,您可以在regex101 上玩自己的模式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2012-12-03
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多