首页 > 解决方案 > 只打印以给定字母/Python 开头的字符串

问题描述

使用 .sort() 按字母顺序打印来自visited_cities 列表的引用

仅打印名称以“Q”或更早开头的城市(表示 a 到 q)

visited_cities = [“纽约”、“上海”、“慕尼黑”、“东京”、“迪拜”、“墨西哥城”、“圣保罗”、“海得拉巴”]

.sort() 很容易做到,但我不知道如何找出问题的第二部分。

标签: startswith

解决方案


你可以用正则表达式和过滤来做到这一点:

import re
regex=re.compile('[A-Q]{1}.*')
cities = list(filter(lambda city: re.match(regex, city), visited_cities))
print(*cities, sep='\n')

正则表达式变量查找从 [AQ] 开始的任何城市

通过使用字符的 Unicode 代码点,甚至还有更简单的解决方案。看方法顺序

for city in visited_cities:
     first_character = city[0]
     if ord(first_character) >= ord('A') and ord(first_character) <= ord('Q'):
             print(city)

Unicode 代码点是按顺序排列的,因此 A 为 65,B 为 66 ... Q 为 81 ... Z 为 90。因此,如果您只想打印那些以 A 到 Q 字母开头的城市,您有确保他们的 Unicode 代码点在 65 到 81 之间


推荐阅读