【问题标题】:How can I know if a string starts with a string from a list? [duplicate]如何知道字符串是否以列表中的字符串开头? [复制]
【发布时间】:2019-06-26 18:15:53
【问题描述】:

我想知道给定的字符串是否以列表中的一些字符串开头。

p1 = ["I2101", "I222", "I7102", "I252"]
g1 = ["I21", "I22", "I252"]
g2 = ["I71"]
for p in p1:
    if p in g1:
        print("grupo1")
    elif p in g2:
        print("grupo2")

它应该显示 grupo1 , grupo1, grupo2, grupo1 但它只适用于 I252 因为它与 g1[2] 相同

【问题讨论】:

  • 我相信您可以找到现有的建议来使用 Python 检查字符串是否具有特定前缀 :) 例如,this question

标签: python python-3.x


【解决方案1】:
p1 = ["I2101", "I222", "I7102", "I252"]

g1 = ["I21", "I22", "I252"]
g2 = ["I71"]

for p in p1:
    if any(p.startswith(g) for g in g1):
        print('{}: Grupo 1'.format(p))
    elif any(p.startswith(g) for g in g2):
        print('{}: Grupo 2'.format(p))

打印:

I2101: Grupo 1
I222: Grupo 1
I7102: Grupo 2
I252: Grupo 1

编辑(替代版本):

g = [(k, 'Grupo 1') for k in g1] + [(k, 'Grupo 2') for k in g2]
print([v[1] for p in p1 for v in g if p.startswith(v[0])])

打印:

['Grupo 1', 'Grupo 1', 'Grupo 2', 'Grupo 1']

【讨论】:

  • @PatrickArtner 已更正。
猜你喜欢
  • 2011-02-16
  • 2014-01-15
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 2012-02-09
  • 2010-12-30
  • 1970-01-01
  • 2011-05-04
相关资源
最近更新 更多