使用Python按字节分割字符串
答案:2 悬赏:20 手机版
解决时间 2021-12-25 10:05
- 提问者网友:你独家记忆
- 2021-12-24 20:21
处理过程大致是:从文件中按行读取数据,对每一行数据按给定的字节(field length)插入分隔符再以UTF-8保存到新的文件。我试过分别以二进制和文本模式打开源文件再进行处理,但都比较繁琐并且失败,原因是多样化的。各位是否有更灵活简单的方法。感激不尽。
最佳答案
- 五星知识达人网友:撞了怀
- 2022-01-10 04:50
按行读取之后按原文件编码类型解码,插入完后按UTF-8解码写入文件
以源文件为gbk为例,假设每5字符插入|
python2
with open('target','w') as f:
for line open('source').readlines():
line=line.decode('gbk')
line='|'.join([line[i:min(i+5,len(line))] for i in range(0,len(line),5)])
f.write(line.encode('utf-8'))python3
with open('target','w',encoding='utf-8') as f:
for line open('source',encoding='gbk').readlines():
line=line
line='|'.join([line[i:min(i+5,len(line))] for i in range(0,len(line),5)])
f.write(line)
以源文件为gbk为例,假设每5字符插入|
python2
with open('target','w') as f:
for line open('source').readlines():
line=line.decode('gbk')
line='|'.join([line[i:min(i+5,len(line))] for i in range(0,len(line),5)])
f.write(line.encode('utf-8'))python3
with open('target','w',encoding='utf-8') as f:
for line open('source',encoding='gbk').readlines():
line=line
line='|'.join([line[i:min(i+5,len(line))] for i in range(0,len(line),5)])
f.write(line)
全部回答
- 1楼网友:逐風
- 2022-01-10 06:18
唔,你也没写具体问题…… 给你个python的字符串处理汇总吧。
str='python string function'
生成字符串变量str='python string function'
字符串长度获取:len(str)
例:print '%s length=%d' % (str,len(str))
一、字母处理
全部大写:str.upper()
全部小写:str.lower()
大小写互换:str.swapcase()
首字母大写,其余小写:str.capitalize()
首字母大写:str.title()
print '%s lower=%s' % (str,str.lower())
print '%s upper=%s' % (str,str.upper())
print '%s swapcase=%s' % (str,str.swapcase())
print '%s capitalize=%s' % (str,str.capitalize())
print '%s title=%s' % (str,str.title())
二、格式化相关
获取固定长度,右对齐,左边不够用空格补齐:str.ljust(width)
获取固定长度,左对齐,右边不够用空格补齐:str.ljust(width)
获取固定长度,中间对齐,两边不够用空格补齐:str.ljust(width)
获取固定长度,右对齐,左边不足用0补齐
print '%s ljust=%s' % (str,str.ljust(20))
print '%s rjust=%s' % (str,str.rjust(20))
print '%s center=%s' % (str,str.center(20))
print '%s zfill=%s' % (str,str.zfill(20))
三、字符串搜索相关
搜索指定字符串,没有返回-1:str.find('t')
指定起始位置搜索:str.find('t',start)
指定起始及结束位置搜索:str.find('t',start,end)
从右边开始查找:str.rfind('t')
搜索到多少个指定字符串:str.count('t')
上面所有方法都可用index代替,不同的是使用index查找不到会抛异常,而find返回-1
print '%s find nono=%d' % (str,str.find('nono'))
print '%s find t=%d' % (str,str.find('t'))
print '%s find t from %d=%d' % (str,1,str.find('t',1))
print '%s find t from %d to %d=%d' % (str,1,2,str.find('t',1,2))
#print '%s index nono ' % (str,str.index('nono',1,2))
print '%s rfind t=%d' % (str,str.rfind('t'))
print '%s count t=%d' % (str,str.count('t'))
四、字符串替换相关
替换old为new:str.replace('old','new')
替换指定次数的old为new:str.replace('old','new',maxreplacetimes)
print '%s replace t to *=%s' % (str,str.replace('t', '*'))
print '%s replace t to *=%s' % (str,str.replace('t', '*',1))
五、字符串去空格及去指定字符
去两边空格:str.strip()
去左空格:str.lstrip()
去右空格:str.rstrip()
去两边字符串:str.strip('d'),相应的也有lstrip,rstrip
str=' python string function '
print '%s strip=%s' % (str,str.strip())
str='python string function'
print '%s strip=%s' % (str,str.strip('d'))
按指定字符分割字符串为数组:str.split(' ')
六、默认按空格分隔
str='a b c de'
print '%s strip=%s' % (str,str.split())
str='a-b-c-de'
print '%s strip=%s' % (str,str.split('-'))
七、字符串判断相关
是否以start开头:str.startswith('start')
是否以end结尾:str.endswith('end')
是否全为字母或数字:str.isalnum()
是否全字母:str.isalpha()
是否全数字:str.isdigit()
是否全小写:str.islower()
是否全大写:str.isupper()
str='python string function'
print '%s startwith t=%s' % (str,str.startswith('t'))
print '%s endwith d=%s' % (str,str.endswith('d'))
print '%s isalnum=%s' % (str,str.isalnum())
str='pythonstringfunction'
print '%s isalnum=%s' % (str,str.isalnum())
print '%s isalpha=%s' % (str,str.isalpha())
print '%s isupper=%s' % (str,str.isupper())
print '%s islower=%s' % (str,str.islower())
print '%s isdigit=%s' % (str,str.isdigit())
str='3423'
print '%s isdigit=%s' % (str,str.isdigit())
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯