首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python怎么实现字符串和数字的转换

2012-03-21 
【求助】python如何实现字符串和数字的转换从文件读取出字符串 要把一部分实现++,举例:AT005CC56,要把AT后面

【求助】python如何实现字符串和数字的转换
从文件读取出字符串 要把一部分实现++,
举例:AT005CC56,要把AT后面的数字++,改成006,再写回去

要把字符串转换成数字,再转回去,求教大侠如何实现,多谢



[解决办法]
这样是否满足?!

Python code
>>> STR'AT005CC56'>>> m = re.findall('[0-9]+',STR)>>> m[0]=(int(m[0])+1).__str__().rjust(3, '0')>>> s = re.sub(re.findall('[0-9]+',STR)[0], m[0], STR)'AT006CC56'
[解决办法]
用正则吧:
Python code
import rea = 'AT005CC56'reg = re.compile(r'AT(\d+?)[^\d]+?\d*')match = reg.search(a)if match is not None:    num = match.groups()[0]    format = 'AT%' + '0%dd' % len(num)    a = reg.sub(format % (int(num)+1), a)print a
[解决办法]
import re
stram='abc12def000007bcdAB005ABC62b' 
fi=re.findall(r'[0-9]+',stram)
for eachNum in fi:
format = '%' + '0%dd' % len(eachNum)
stram=stram.replace(eachNum,format %(int(eachNum)+1))

print stram
[解决办法]
对字符串执行eval可以获得对应的数值,比如eval("134")得到134,
对数字执行str可以获得对应的字符串
不过eval不是很安全,比如你的字符串是从用户来的,用户可能会给你一个删除文件的字符串,建议使用pickle
[解决办法]
嗯,是有因数字相同换错的情形,而且replace/sub本身会再次查找,效率应该会差点,可以先记录匹配位置,最后再一次性替换。譬如,我想递增AB后面数字,可如下:
Python code
import retext = 'A100R200C555B555'robj = re.compile(r'(?<=[AB])\d+')found = []beg = 0end = len(text)while beg < end:    mobj = robj.search(text, beg)    if not mobj:        break    beg = mobj.end()    found.append((mobj.start(), mobj.end()))    rep = textfor beg, end in found:    num = str(int(text[beg:end])+1).zfill(end-beg)    rep = rep[:beg] + num + rep[end:]    print foundprint rep
[解决办法]
探讨
各位,我的字符串是这样的 A100R200C555B555,几个前后几个字母后面的数字有可能相同的,但只要改B后面的。
如果用replace 或者sub ,会将C后面的也替换掉。

[解决办法]
好像str.replace()默认替换所有吧...
[解决办法]
探讨
各位,我的字符串是这样的 A100R200C555B555,几个前后几个字母后面的数字有可能相同的,但只要改B后面的。
如果用replace 或者sub ,会将C后面的也替换掉。

热点排行