python - 从字符串中添加不同的项目到列表中

标签 python list

比方说,有一个字符串可以是:

  • “3d6”
  • “t3d6”
  • “3h4d6”
  • “t3h4d6”
  • “6 t3d6”
  • “6 t3h4d6+6”和类似的可能变体。

有没有办法遍历字符串并根据它们是字母/数字/符号/其他内容将其中的项目添加到列表中?例如,"6 t3h10d6+6" 将导致 [6, "", "t", 3, "h", 10, "d", 6, "+", 6] 作为列表。

我正在开发一个电报机器人,它使用 python 通过骰子计算结果回答用户输入,最难的部分是处理用户输入。现在正在通过笨拙的 if 语句复杂处理输入。可能有更好的方法来处理用户输入,我很乐意听取您的建议!

this question 不重复.问题是关于将字符串分解为字符列表,基本上将字符串转换为字符串列表。我的问题是关于将字符串分解为不同项目的列表,这些项目可以是字符串也可以是整数。

最佳答案

您也可以为此使用 regex(通过指定查找所有数字和非数字字符):

>>> x
'6 t3h4df6d+!643'
>>> __import__("re").findall('\d+|\s+|\D+', x)
['6', ' ', 't', '3', 'h', '4', 'df', '6', 'd+!', '643']

如您所见,上面的表达式没有将 d+! 分开。 如果这是一个问题,你可以稍微修改上面的规则 表达为:

>>> x = '6 t3h4df6d+!643'
>>> re.findall('\d+|\s+|[a-zA-Z]+|\D+', x)
['6', ' ', 't', '3', 'h', '4', 'df', '6', 'd', '+!', '643']

将它们完全分开!

更新

如果您想将字符串拆分为单个字符(例如 "xy"['x','y']),您可以更改上面的 正则表达式表达式为:

>>> x = '6 t3h4df6d+!643'
>>> __import__("re").findall('\d+|\s+|\w|\D+', x)
['6', ' ', 't', '3', 'h', '4', 'd', 'f', '6', 'd', '+!', '643']

关于python - 从字符串中添加不同的项目到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46038766/

相关文章:

python - 如何使用python接收邮件

list - 在 Scheme 中生成一个倍数列表

python - 是否可以提取包含重复值的交集列表?

python - 是否可以在修改列表成员时监视列表(或可变序列)?

python - Dataframe Apply方法返回多个元素(系列)

Python 重新返回不匹配的行

python - 使用 CIGAR 推断序列的长度

python - 一个列表理解中的两个 for 循环分别

json - 将 Json 响应中的对象列表映射到 flutter 中的列表

python - 如何检查 list_display 如果没有值,以在 django admin 中显示?