如何在Python 2.7.1中将字母字符串转换为三个字母的单词
我有一串字母 'aaabbbcccdddeeefffggg
',我想把它分成每三个字母为一组的单词。比如说,'aaa','bbb','ccc'...
你知道有没有什么代码可以实现这个功能吗?
我的最终目标是给每个单词分配一个数字,比如说
aaa= 123
bbb= 234
ccc= 356 ...
然后输出的结果就是这个单词在句子中的位置和对应的数字
所以对于这句 'aaabbbcccdddeeefffggg
',三个字母的单词会是 'aaa','bbb','ccc'...
aaa
会是第一个位置 (1),bbb
会是第二个位置 (2),ccc
会是第三个位置 (3)
所以最终我会得到
(1,123),(2,234),(3,356) for 'aaa','bbb','ccc'
我已经尝试了几个小时,但还是搞不定,所以任何帮助都非常感谢
谢谢
4 个回答
0
ch = 'bbbiiieeefffhhhaaacccddd'
d = dict(zip(('aaa','bbb','ccc','ddd','eee','fff','ggg','hhh','iii'),
('123','234','345','456','567','678','789','8910','91011')))
def lect(x):
gen = iter(x)
while True:
yield ''.join((gen.next(),gen.next(),gen.next()))
print [ (i+1,d[x]) for i,x in enumerate(lect(ch)) ]
或者
import re
ch = 'bbbiiieeefffhhhaaacccddd'
d = dict(zip(('aaa','bbb','ccc','ddd','eee','fff','ggg','hhh','iii'),
('123','234','345','456','567','678','789','8910','91011')))
pat = re.compile('|'.join(d.iterkeys()))
print [ ((mat.start()/3)+1,d[mat.group()]) for mat in pat.finditer(ch) ]
1
像这样吗?
data = 'aaabbbcccdddeeefffggg'
trans = {'aaa': 123, 'bbb': 234, 'ccc': 356, ...}
[(x + 1, trans[y * 3]) for x, y in enumerate(data[::3])]
否则的话:
def trans(c):
a = ord('a')
return ord(c) - a + 3 + 10 * (ord(c) - a + 2) + 100 * (ord(c) - a + 1)
data = 'aaabbbcccdddeeefffggg'
[(x + 1, trans(y)) for x, y in enumerate(data[::3])]
0
当然可以!请看下面的内容:
在编程中,有时候我们需要处理一些数据,比如从一个地方获取信息,然后在另一个地方使用这些信息。这个过程就像是把水从一个水桶倒到另一个水桶里。我们需要确保水不会洒出来,也就是要确保数据在转移过程中不会丢失。
为了做到这一点,程序员通常会使用一些工具和方法来帮助他们管理这些数据。比如,使用变量就像是给水桶贴上标签,这样我们就知道每个水桶里装的是什么。
此外,还有一些特定的规则和步骤,帮助我们在处理数据时保持整洁和有序。就像在厨房做饭时,我们会先准备好所有的材料,然后按照食谱一步一步来,这样才能做出美味的菜肴。
总之,编程就像是一个复杂的拼图游戏,我们需要把不同的部分组合在一起,才能完成一个完整的作品。
>>> a = "aaabbbcccdddeeefffggg"
>>> [a[i:i+3] for i in range(0, len(a), 3)]
['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff', 'ggg']