首页 > 解决方案 > 从少于 4 位的列表中提取数字,并在每个数字的开头和结尾附加一个字符串

问题描述

我有一个包含多个数字的文件。

如果数字长度小于 4 位,我们需要将其提取并附加 0 到开头,+ 一个后缀,然后附加到主列表。

前任

DF = [ 1, 23, 333, 4444]

应该

DF = [0001.hk, 0023.hk, 0333.hk, 4444.hk]

下面的代码有效,并帮助我完成上述任务。

Master_List = [Here is where all tickers should be store for some further processing]

def prework1():
    file = 'Path/to/document'
    tickers = []
    read = pd.read_csv(file, names =['IB_Symbol', 'Description', 'Symbol', 
    'Currency'])
    tickers = read['Symbol'].tolist()

    ticker_list = []

    for ticker in tickers:
        if len(ticker) == 1:
            ticker_list.append(ticker)

    ticker_list1 = []

    for ticker in ticker_list:
        string = '000'
        string1 = '.hk'
        tickers1 = [string + ticker + string1]
        ticker_list1.append(tickers1)

    ticker_list2 = []

    for sublist in ticker_list1:
        for item in sublist:
            ticker_list2.append(item)

    return ticker_list2



def prework2():
    file = 'Path/to/document'
    tickers = []
    read = pd.read_csv(file, names =['IB_Symbol', 'Description', 'Symbol', 'Currency'])
    tickers = read['Symbol'].tolist()

ticker_list = []

    for ticker in tickers:
        if len(ticker) == 2:
            ticker_list.append(ticker)

    ticker_list1 = []

    for ticker in ticker_list:
        string = '00'
        string1 = '.hk'
        tickers1 = [string + ticker + string1]
        ticker_list1.append(tickers1)

    ticker_list3 = []

    for sublist in ticker_list1:
        for item in sublist:
            ticker_list3.append(item)

    return ticker_list3


def prework3():
    file = 'Path/to/document'
    tickers = []
    read = pd.read_csv(file, names =['IB_Symbol', 'Description', 'Symbol', 
    'Currency'])
    tickers = read['Symbol'].tolist()

    ticker_list = []

    for ticker in tickers:
        if len(ticker) == 3:
            ticker_list.append(ticker)

    ticker_list1 = []

    for ticker in ticker_list:
        string = '0'
        string1 = '.hk'
        tickers1 = [string + ticker + string1]
        ticker_list1.append(tickers1)

    ticker_list4 = []

    for sublist in ticker_list1:
        for item in sublist:
            ticker_list4.append(item)

    return ticker_list4



test1 = prework1()
test2 = prework2()
test3 = prework3()

print(test1)
print(test2)
print(test3)

上述方法存在几个问题。

使用上面的代码,它会给我 3 个列表,但结果应该只有 1 个列表,所以我可以做一些进一步的处理/任务。

另外,我觉得它看起来很奇怪和重复。它会做预期的事情,但是有没有办法让它变得更好一点?

感谢所有帮助!

标签: pythonpython-3.x

解决方案


最简单的方法是:

>>> result = [f'{i:04}.hk' for i in DF]
>>> result
['0001.hk', '0023.hk', '0333.hk', '4444.hk']

在介绍它们的PEP 498文档中阅读有关格式字符串的更多信息。


推荐阅读