用缺少的元素格式化字符串

2024-03-28 23:05:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下字符串:

string1 = "1/0/1/A1,A2"
string2 = "1/1/A1,A2"
string3 = "0/A1,A2"

在上面的字符串中,如果字符不存在,我必须将其替换为零。默认结构为“number/number/number/any_character`”,如果缺少任何number,则必须用零替换。答案如下。你知道吗

print(string1) = "1/0/1/A1,A2"
print(string2) = "1/1/0/A1,A2"
print(string3) = "0/0/0/A1,A2"

Tags: 字符串答案a2numbera1any字符结构
3条回答

您可以使用str.split

def pad_string(_input, _add='0'):
  *_vals, _str = _input.split('/')
  return '/'.join([*_vals, *([_add]*(3-len(_vals))), _str])

results = list(map(pad_string, ['1/0/1/A1,A2', '1/1/A1,A2', '0/A1,A2']))

输出:

['1/0/1/A1,A2', '1/1/0/A1,A2', '0/0/0/A1,A2']

您可以轻松地从左侧填充缺少的元素:

def fillZeros(item):
    chunks = item.split('/')
    for inserts in range(0, 4 - len(chunks)):
        chunks.insert(0, '0')
    return '/'.join(chunks)

string1 = "1/0/1/A1,A2"
string2 = "1/1/A1,A2"
string3 = "0/A1,A2"


for myString in (string1, string2, string3):
    print fillZeros(myString)

印刷品:

1/0/1/A1,A2
0/1/1/A1,A2
0/0/0/A1,A2

但是对于string2示例,您需要确定丢失了哪个元素:1/1/A1,A2。是第一个还是第三个元素丢失了?!你知道吗

如果您只想使用字符串操作和循环,请尝试以下操作

strings_list = []
for string in [string1, string2, string3]:     # make list containing all strings
    strings_list.append(string)

new_strings = [] # make list containing the new strings
for string in strings_list:
    if string.count("0/") + string.count("1/") == 3:
        # identify the strings not missing a number
        new_strings.append(string)
    if string.count("0/") + string.count("1/") == 2:
        # identify the strings missing 1 number
        string = string[:4] + "0/" + string[4:]
        new_strings.append(string)
    if string.count("0/") + string.count("1/") == 1:
        # identify the strings missing 2 numbers
        string = string[:2] + "0/" + string[2:]
        new_strings.append(string)
print(new_strings)

这导致['1/0/1/A1,A2', '1/1/0/A1,A2', '0/0/A1,A2']。你知道吗

相关问题 更多 >