python - 将字符串列表转换为数字但保留空格 - Python
问题描述
我正在尝试将此字符串列表转换arr = c zza abb baa acd b ca zzz zr il
为数字,但我将它们加入到一个列表中,这不是我想要的。我希望他们保持原来的结构(子字符串之间有空格)。如果我运行这个:
a = []
for char in arr: # is the issue here because I'm iterating over each char?
number = ord(char.lower()) - 96
a.append(number) # what do I change here, when appending, to keep the space?
我得到:[3, -64, 26, 26, 1, -64, 1, 2, 2, -64, 2, 1, 1, -64, 1, 3, 4, -64, 2, -64, 3, 1, -64, 26, 26, 26, -64, 26, 18, -64, 9, 12]
它会将空格转换为-64
所以如果我运行它,我会删除-64
.
a = [x for x in a if x != -64]
它返回:[3, 26, 26, 1, 1, 2, 2, 2, 1, 1, 1, 3, 4, 2, 3, 1, 26, 26, 26, 26, 18, 9, 12]
但是我仍然将它们放在一组中,而不是保持它们原来的空间分隔。总的来说,我需要对每组字符串进行排序,但不使用sorted()
or .sort()
,同时维护它们的子字符串组。所以我不需要保留空格并对子字符串进行排序(当它们是数字形式时)。
解决方案
您根本不必转换为整数,即可对每组字符进行排序:
>>> s = "c zza abb baa acd b ca zzz zr il"
>>> " ".join("".join(sorted(grp)) for grp in s.split())
'c azz abb aab acd b ac zzz rz il'
或者,如果您的意思是对组本身进行排序:
>>> " ".join(sorted(s.split()))
'abb acd b baa c ca il zr zza zzz'
推荐阅读
- vba - 在 Visual Basic 中打开两个工作簿时,未正确分配工作簿变量
- android - 如果从启动器图标暂停并重新启动,应用程序将返回第一个活动
- java - 跨站点脚本:将字节数组写入输出流时出现持续问题
- python - 如何在模板中使用 django-summernote
- reactjs - 如何在 Text ReactNative 中包含 TouchableOpacity
- java - 使用 JCodec 错误将图像编码为视频
- webrtc - 使用 TURN 服务器时的高 rtt 值
- android - 如何获取 2 个保存当前时间的日期对象,一个在 GMT,另一个在本地
- javascript - 拖放“丢弃的项目”
- javascript - 单击浏览器后退按钮时反应显示相同的项目列表