簡體   English   中英

字符串格式,從右到左修剪

[英]String formatting, trim from right instead of left

我有一組要格式化的字符串,以將字符串保留為5個字符。 我正在使用這樣的行(原始字符串有時是5個字符,有時是6個字符):

ram1 = ram1.astype('|S5')

但是,這變成

039410

進入

39410

當我想成為

03941

有沒有簡單的方法可以解決我的代碼行這樣做?

干杯!

您可以使用format

ram1 = '3941'
print '{0:0>5s}'.format(ram1)
## 03941

后面的字符:描述格式(0填充的5個字符的長字符串)。

您也可以使用zfill

print ram1.zfill(5)
## 03941

如果需要截斷字符串,可以使用以下格式:

print '{:.5s}'.format('039410')
## 03941

既然您提到了astype ,它看起來ram是一個NumPy數組。

要從每個值的正確大小中刪除所有0 ,請使用np.char.rstrip

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指出的那樣 ,如果您有一個字符串數組:

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)

如果您正在使用包含字符串的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'

如果字符串長度不少於5個字符,則可以使用以下代碼

a = "abcdef"

print a[0:5]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM