我正在尝试从txt文件在Python 2.7中创建一系列股票行情。 txt文件每行只有1个自动收报机,如:
SRCE
ABTX
AMBC
ATAX
我正在使用的代码如下:
FinTick= []
def parseRus():
try:
readFile=open(r'filename.txt','r').read()
splitFile=readFile.split('\n')
FinTick.append(splitFile)
print FinTick
except Exception, e:
print str(e)
当我调用'parseRus()'时,我得到一个看起来像的输出:
'\xff\xfeS\x00R\x00C\x00E\x00\r\x00', '\x00A\x00B\x00T\x00X\x00\r\x00', '\x00A\x00M\x00B\x00C\x00\r\x00', '\x00A\x00T\x00A\x00X\x00\r\x00'
存在正确的字母但不在平面文本中打印。我已经使用了一些其他逻辑方法来填充数组,但仍然获得相同的输出格式。
答案 0 :(得分:2)
>>> tickers = []
>>> with open("filename.txt", "r") as f:
for ticker in f.readlines():
tickers.append(ticker.strip())
>>> tickers
['SRCE', 'ABTX', 'AMBC', 'ATAX']
请尝试使用readlines()
和strip()
。
修改:f.readlines()
和strip()
周围的清晰度:
>>> with open("filename.txt", "r") as f:
print(f.readlines())
['SRCE\n', 'ABTX\n', 'AMBC\n', 'ATAX']
因此,当我们重复list
返回的f.readlines()
对象时,我们需要删除换行\n
个字符。使用strip()
类型的str
方法执行此操作。
编辑2:@Eli是对的。我们也可以使用for ticker in f
代替for ticker in f.readlines()
。
>>> tickers = []
>>> with open("filename.txt", "r") as f:
for ticker in f:
tickers.append(ticker.strip())
>>> tickers
['SRCE', 'ABTX', 'AMBC', 'ATAX']
答案 1 :(得分:0)
我终于找到了解决办法。
我必须将文本文件从1列修改为1行,然后保存为.csv并将代码修改为:
FinTick= []
def parseRus():
try:
readFile=open(r'filename.csv','r').read()
splitFile=readFile.split(',')
for eachLine in splitFile:
splitLine=eachLine.split(',')
ticker=splitLine[0]
FinTick.append(ticker.strip())
except Exception, e:
print str(e)