2、使用切片方式访问到指定列,不过需要调用loc这个表示行列的对象。
3、调用contains()方法检查列中是否有指定的值,有的话就将其进行替换处理。
python中快速进行多个字符替换的方法小结
先给出结论:
要替换的字符数量不多时,可以直接链式replace()方法进行替换,效率非常高;
如果要替换的字符数量较多,则推荐在 for 循环中调用 replace() 进行替换。
可行的方法:
1. 链式replace()
?
1 string.replace().replace()1.x 在for循环中调用replace() 「在要替换的字符较多时」
2. 使用string.maketrans
3. 先 re.compile 然后 re.sub
采取的算法是:将第一和除其之外的每个字母对比,相同即记下替换后的word,依次下推(第二和第三、第四。。。),逐个修改映射list
# coding:utf8if __name__ == '__main__':
words = ['school','google','getfileinfo','cherrypy','pypy']
print words
tmps = words #映射list,存放替换大小写后的list
index = 0 #list遍历到第几个了
for wds in words: #遍历words
i = 0 #记录list下的每个word长度
j = 0 #记录每个word有几个相同的字母数
#下面采取的算法是:将第一和除其之外的每个字母对比,相同即记下替换后的word,依次下推(第二和第三、第四。。。),逐个修改映射list:tmps
for wd_a in wds[i:]:
for wd_b in wds[i+1:]:
if wd_a == wd_b:
# print wds, wd_a.upper()
j += 1
if j > 1: #相同字母超过一个的,需要沿用之前修改好的word,否则最后记录的将是最后一个相同字母转大写的word
tmp = tmp.replace(wd_a, wd_a.upper(), 1)
else:
tmp = wds.replace(wd_a, wd_a.upper(), 1)
# print tmp
tmps[index] = tmp #修改映射list:tmps
i += 1
index += 1
print tmps
运行结果:
['school', 'google', 'getfileinfo', 'cherrypy', 'pypy']
['schOol', 'GOogle', 'gEtFIleinfo', 'cheRrYpy', 'PYpy']
算法二:
# coding:utf8if __name__ == '__main__':
words = ['school','google','getfileinfo','cherrypy','pypy']
print words
tmps = words #映射list,存放替换大小写后的list
#算法二
#下面采取的算法是:先将单词序列化,然后排序,接着采取两两相比较,减少比较次数,同时遇到相同字母的就跳到下一组对比
index = 0
for word in words:
letters = []
for wd in word:
letters.append(wd)
letters.sort()
# print letters
j = 0
flag = False
for i in range(len(letters)-1):
if flag:
flag = False #重置跳过标记
continue #第一和第二位字母相同,那就没必要再比较第二和第三位字母了,直接跳过比较第三和第四位字母
# print letters[i],letters[i+1]
if letters[i] == letters[i+1]:
j += 1
if j > 1:
tmp = tmp.replace(letters[i], letters[i].upper(), 1)
else:
tmp = word.replace(letters[i], letters[i].upper(), 1)
# print tmp
tmps[index] = tmp
flag = True #jump flag
index += 1
print tmps
测试了下运行时间,words在145个时,运行时间对比:
Time2: 0.0160000324249
Time2: 0.0150001049042
Time2: 0.0149998664856
Time1: 0.0160000324249
Time1: 0.0159997940063
Time1: 0.0150001049042
可见算法二的最少运行时间比算法一少,要快