2024-10-04 15:29:08 发布
网友
我有一组字符串,我想格式化,以保持字符串在5个字符。我使用这样的行(原始字符串有时是5个字符,有时是6个字符):
ram1 = ram1.astype('|S5')
然而,这个转变
039410
进入
39410
当我想要的时候
03941
有没有一个简单的方法来修复我的代码行呢?你知道吗
干杯!你知道吗
您可以使用format:
format
ram1 = '3941' print '{0:0>5s}'.format(ram1) ## 03941
其中:后面的字符描述格式(0填充的5字符长字符串)。你知道吗
:
也可以使用zfill:
zfill
print ram1.zfill(5) ## 03941
如果需要截断字符串,可以使用以下格式:
print '{:.5s}'.format('039410') ## 03941
既然您提到了astype,那么ram似乎是一个NumPy数组。你知道吗
astype
ram
要从每个值的正确大小中删除所有0,请使用^{}:
0
np.char.rstrip(ram, '0')
为了只保留每个值的前5个字节
ram.astype('|S5')
够了。你知道吗
例如
import numpy as np ram = np.array(['039410', '123456', '00000']).astype('|S6') print(np.char.rstrip(ram, b'0')) # ['03941' '123456' ''] print(ram.view('|S5')) # ['03941' '12345' '00000']
作为Padraic Cunningham points out,如果您有一个字符串数组:
In [209]: ram = np.array(['039410', '123456', '00000']).astype('|S6'); ram Out[209]: array([b'039410', b'123456', b'00000'], dtype='|S6')
如果将字符串转换为整数,左边的零将丢失:
In [210]: ram.astype(int) Out[210]: array([ 39410, 123456, 0])
因此,如果希望保留字符串的前5个字节,请不要使用astype(int)。你知道吗
astype(int)
如果您使用的是包含字符串的numpy数组,那么astype可以正常工作。你知道吗
string = np.array('039410') print string ## 039410 string = string.astype('|S5') print string ## 03941
如果您正在处理字符串列表,那么您应该这样做。你知道吗
str_list = ['039410'] index = 0 for i in str_list: i = i[:5] str_list[index] = i index += 1 print str_list ## ['03941']
如果你在处理一个字符串,那么你只需要这样做
str_num = '039410' str_num = str_num[:5] print str_num ## '03941'
您可以使用
format
:其中
:
后面的字符描述格式(0填充的5字符长字符串)。你知道吗也可以使用
zfill
:如果需要截断字符串,可以使用以下格式:
既然您提到了
astype
,那么ram
似乎是一个NumPy数组。你知道吗要从每个值的正确大小中删除所有} :
0
,请使用^{为了只保留每个值的前5个字节
够了。你知道吗
例如
作为Padraic Cunningham points out,如果您有一个字符串数组:
如果将字符串转换为整数,左边的零将丢失:
因此,如果希望保留字符串的前5个字节,请不要使用
astype(int)
。你知道吗如果您使用的是包含字符串的numpy数组,那么astype可以正常工作。你知道吗
如果您正在处理字符串列表,那么您应该这样做。你知道吗
如果你在处理一个字符串,那么你只需要这样做
相关问题 更多 >
编程相关推荐