python - 从少于 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 个列表,所以我可以做一些进一步的处理/任务。
另外,我觉得它看起来很奇怪和重复。它会做预期的事情,但是有没有办法让它变得更好一点?
感谢所有帮助!
解决方案
最简单的方法是:
>>> result = [f'{i:04}.hk' for i in DF]
>>> result
['0001.hk', '0023.hk', '0333.hk', '4444.hk']
在介绍它们的PEP 498文档中阅读有关格式字符串的更多信息。
推荐阅读
- javascript - 图表js中饼图之间的填充
- reactjs - React.js:我无法通过父组件为两个子组件之间的交换编写回调
- ios - 如何修复 TabView 在横向模式下重叠最后一个列表项?
- regex - 在 Vim 中忽略部分搜索模式中的大小写
- node.js - NodeJS fetch 在 fs.writeFile 回调中执行时返回 ECONNREFUSED 错误
- javascript - 如何创建对象作为参数?
- python - 将数据框作为 parquet 文件加载到 Google 云存储
- c - GCD 函数的时间复杂度
- hive - Tez FileNotFoundException 上的 Apache Hive 查询
- python - 在 Django 中选中复选框的列表