使用for循环将字符串追加到列表中,其中添加了每个项目,这是一个新字符串

时间:2019-02-11 16:38:52

标签: python list numpy for-loop

我试图创建一个新的创建列表,其中通过for循环的每次迭代将一个新项目附加到列表中。到目前为止的代码如下:

path_start = 'https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin'
file = ".csv"

start = datetime.datetime.strptime("10-02-2007", "%d-%m-%Y")
end = datetime.datetime.strptime("21-02-2019", "%d-%m-%Y")
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)]

date_list = []

for date in date_generated:
    date_string = date.strftime("%d%m%Y")
    for path_name in date_string:
        x = path_start + date_string + file
        date_list.append(x)

print(date_list)

当我这样做时,将创建一个列表,但是列表中的每个项目都是相同的。我希望每个项目都使用在上一个for循环中创建的date_string变量,该变量应在每次迭代中更改。这是它创建的列表的示例:

['https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin10022007.csv', 'https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin10022007.csv'

我尝试更改循环的缩进,但这并不能解决问题。

我还尝试使用numpy数组提高效率,但是对此问题的答案(How to declare and add items to an array in Python?)表示使用列表。由于清单特别长,因此任何提高效率的帮助也将受到赞赏。

干杯, 桑迪

2 个答案:

答案 0 :(得分:2)

您的问题就在这里

for path_name in date_string:

date_string此时是字符串值。您的path_name变量(未在循环内使用)正在字符串中逐个字符地迭代。

这意味着每个条目将有8个值(ddmmyyyy = 8个字符)。如果您查看结果列表中的每第八个条目,则可能会看到更改。

我认为您根本不需要内循环。试试这个:

for date in date_generated:
    date_string = date.strftime("%d%m%Y")
    x = path_start + date_string + file
    date_list.append(x)

答案 1 :(得分:1)

您只需要像下面这样更改for循环:

date_list = []
for date in date_generated:
    date_list.append(path_start + date.strftime("%Y%m%d") + file)

print(date_list)

输出示例:

[...'https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin20190124.csv',... 'https://promo.betfair.com/betfairsp/prices/dwbfpricesukwin20190219.csv'...]

注意:不需要第二个循环,因为您不需要在date_string上循环,您需要将日期附加到字符串名称上