Python:根据条件插入数组
Python: insert into arrays based on condition
下面的代码产生了这个错误:
Traceback (most recent call last):
File "pulllist2.py", line 28, in <module>
list_sym[w] = symbol
IndexError: list assignment index out of range
我在这里想要实现的是,如果 word1
和 word2
在 security_name
的字符串中,则只向数组添加一个元素。我也不知道另一种初始化数组的方法。
#!/usr/bin/env python3
import glob
import os
import sys
import fnmatch
list_sym = []
list_name = []
w = 0
count = 0
word1 = 'Stock'
word2 = 'ETF'
# for loop that parses lines into appropriate variables
for file in glob.glob('./stocklist/*.txt'):
with open(file) as input:
for line in input:
# split line into variables.. trash will have no use
symbol, security_name, trash = line.split('|', 2)
if word1 in security_name or word2 in security_name:
# stores values in array
list_sym.append(1) ## initialize arrays
list_name.append(1)
list_sym[w] = symbol
list_name[w] = security_name
count += 1
w += 1
您不能在 python 中执行此操作。
试试
list_sym.append(symbol)
list_name.append(security_name)
你已经在这里初始化了你的列表,尽管是一个空列表:
list_sym = []
这很好,但是,当您添加到列表中时会发生什么?您可以简单地使用 append
方法。
list_sym.append(whatever)
看起来您来自旧语言(Java 或 C 或 C++)。所有带有大括号和固定数组长度的东西以及诸如此类的无聊东西。您不必为所做的一切编制索引。
append
ing 一个列表,就是简单地添加到列表中。您可以向列表中添加任何内容。
list_sym.append(5345034750439)
list_sym.append("Yo. What's up!")
这对您来说更安全,因为您可以直接添加,而不是试图获得职位。附加是要走的路。
求长度:
>>> len(list_sym)
10 # There's 10 objects in the list.
让我向你推荐字典,就像我说的:
字典允许您将对象配对在一起,就像分配变量一样。就这么简单:
my_dictionary = {}
要添加对象,您需要您的键和值。
my_dictionary["name"] = "Zinedine"
^ ^
Key Value
要获得价值,你需要知道钥匙(没有金钥匙你怎么得到宝藏)。就像您尝试为列表编制索引一样,您可以通过相同的概念获得价值。字典通常用于配对对象,或在公共范围内存储多个变量。希望对你有帮助! :)
我认为代码过于复杂。我了解到您正在尝试 'associate' 带有证券名称的符号,并且还希望将符号和证券名称分别作为列表。正则表达式在这里可能是个好主意。
import re
r = re.compile(r'Stock|ETF')
list_sym = {} # NOTE: A dict - keys symbols, values security names
for file in glob.glob('./stocklist/*.txt'):
with open(file) as input:
for line in input:
# split line into variables.. trash will have no use
symbol, security_name, trash = line.split('|', 2)
if r.match(security_name): # something matches
# stores values in array
list_sym[symbol.lower()] = security_name # just to be safe
symbols = list_sym.keys()
security_names = list_sym.values()
这大致解释了这个想法。可能需要进行一些编辑才能尝试您要实现的目标。
下面的代码产生了这个错误:
Traceback (most recent call last):
File "pulllist2.py", line 28, in <module>
list_sym[w] = symbol
IndexError: list assignment index out of range
我在这里想要实现的是,如果 word1
和 word2
在 security_name
的字符串中,则只向数组添加一个元素。我也不知道另一种初始化数组的方法。
#!/usr/bin/env python3
import glob
import os
import sys
import fnmatch
list_sym = []
list_name = []
w = 0
count = 0
word1 = 'Stock'
word2 = 'ETF'
# for loop that parses lines into appropriate variables
for file in glob.glob('./stocklist/*.txt'):
with open(file) as input:
for line in input:
# split line into variables.. trash will have no use
symbol, security_name, trash = line.split('|', 2)
if word1 in security_name or word2 in security_name:
# stores values in array
list_sym.append(1) ## initialize arrays
list_name.append(1)
list_sym[w] = symbol
list_name[w] = security_name
count += 1
w += 1
您不能在 python 中执行此操作。 试试
list_sym.append(symbol)
list_name.append(security_name)
你已经在这里初始化了你的列表,尽管是一个空列表:
list_sym = []
这很好,但是,当您添加到列表中时会发生什么?您可以简单地使用 append
方法。
list_sym.append(whatever)
看起来您来自旧语言(Java 或 C 或 C++)。所有带有大括号和固定数组长度的东西以及诸如此类的无聊东西。您不必为所做的一切编制索引。
append
ing 一个列表,就是简单地添加到列表中。您可以向列表中添加任何内容。
list_sym.append(5345034750439)
list_sym.append("Yo. What's up!")
这对您来说更安全,因为您可以直接添加,而不是试图获得职位。附加是要走的路。
求长度:
>>> len(list_sym)
10 # There's 10 objects in the list.
让我向你推荐字典,就像我说的:
字典允许您将对象配对在一起,就像分配变量一样。就这么简单:
my_dictionary = {}
要添加对象,您需要您的键和值。
my_dictionary["name"] = "Zinedine"
^ ^
Key Value
要获得价值,你需要知道钥匙(没有金钥匙你怎么得到宝藏)。就像您尝试为列表编制索引一样,您可以通过相同的概念获得价值。字典通常用于配对对象,或在公共范围内存储多个变量。希望对你有帮助! :)
我认为代码过于复杂。我了解到您正在尝试 'associate' 带有证券名称的符号,并且还希望将符号和证券名称分别作为列表。正则表达式在这里可能是个好主意。
import re
r = re.compile(r'Stock|ETF')
list_sym = {} # NOTE: A dict - keys symbols, values security names
for file in glob.glob('./stocklist/*.txt'):
with open(file) as input:
for line in input:
# split line into variables.. trash will have no use
symbol, security_name, trash = line.split('|', 2)
if r.match(security_name): # something matches
# stores values in array
list_sym[symbol.lower()] = security_name # just to be safe
symbols = list_sym.keys()
security_names = list_sym.values()
这大致解释了这个想法。可能需要进行一些编辑才能尝试您要实现的目标。