原文作者:Scott David Daniels 中文编译:Tony (digitalsatori) 问题 如何才能用简单的方法将字符串中的一些特殊标记的子串替换为一个字典中定义的字符串。 解决方法 以下的解决方法对Python2.3以上的版本有效: def expand(format, d, marker='"', safe=False): if safe: def lookup(w): return d.get(w, w.join(marker*2)) else: def lookup(w): return d[w] parts = format.split(marker) parts[1::2] = map(lookup, parts[1::2]) return ''.join(parts) if _ _name_ _ == '_ _main_ _': print expand('just "a" test', {'a': 'one'}) # emits: just one test 当参数 [...]
原文作者:Alex Martelli 中文翻译:Tony(digitalsatori) 问题描述 如何按单词或字母反向排列一个字符串 解决方法 字符串是不可改变的(immutable),所以要反向排列就需要创建一个新的字符串。反向排列最简单的方法就是使用“步进”(step)为-1的扩展切片(extended slice)操作: revchars = astring[::-1] 如果要按单词来反向排列字符串,就要先创建一个包含所有单词的列表,反向排列该列表,再用空格将列表中的单词重新连接为字符串: revwords = astring.split() # 字符串 -> 单词列表 revwords.reverse() # 反向排列单词列表 revwords = ' '.join(revwords) # 单词列表 -> 字符串 或者,也可以用一行紧凑代码来表示: revwords = ' '.join(astring.split()[::-1] 如果要按单词反转排列字符串,同时又要保持单词间的空格不变,可以使用正则表达式: import re revwords = re.split(r'(\s+)', astring) #字符串转换为列表,包含空格 revwords.reverse() #反转列表 revwords = ''.join(revwords) #列表 -> 字符串 请注意这里的连接符必须是空字符串,因为原有的空格分隔符保留在revwords列表中。同样,我们可以使用一行紧凑代码: revwords = ''.join(re.split(r'(\s+)', [...]
问题 如何将几个小的字符串连接成一个大的字符串。 解决办法 字符串操作符 join 能将一系列小的字符串连接成一个较大的字符串。比如下例中的 pieces 是一个其成员为字符串的列表。如果你要按顺序将列表中的所有字符串连接成一个较大的字符串,可以这样: largeString = ''.join(pieces) 如果要将存储在变量中的字符串连接在一起,可以使用字符串格式化操作符%,比如: largeString = '%s%s something %s yet more' % (small1, small2, small3) 讨论 在Python中,+操作符用以连接字符串,所以它似乎是将多个小字符串连接成大字符串的不二选择。比如有几个保存在变量中的字符串,下面的处理似乎顺理成章: largeString = small1 + small2 + ' something ' + small3 + ' yet more' 相似地,如果要处理包含小字符串的序列 pieces,如下的方法似乎也很显然: LargeString = '' for piece in pieces: largeString += piece 或者使用下面这种等效且更加紧凑,机巧的方法: import operator [...]













