0

私はこれに取り組んでおり、何時間もグーグルで検索しています。何が問題なのか理解できないようです。

このプログラムの目的は、株式市場のティッカー シンボルのテキスト ファイルをチェックし、ティッカーがまだファイルにない場合にのみティッカーを追加することです。

うまくいかないことが 2 つあります。テキスト ファイルが空の場合、ティッカーはまったく追加されません。テキスト ファイルに 1 文字でも含まれている場合、そのティッカーが既にリストにあるかどうかに関係なく、与えられたすべてのティッカーが追加されます。

import re

def tickerWrite(tick):
    readTicker = open('Tickers.txt', 'r')
    holder = readTicker.readlines()
    readTicker.close()

    if check(tick) == False:
        writeTicker = open('Tickers.txt', 'w')
        holder.append(tick.upper() + '\n')
        writeTicker.writelines(holder)
        writeTicker.close()

def check(ticker):
    with open('Tickers.txt') as tList:
        for line in tList:
            if re.search(ticker, line):
                return True
            else:
                return False

ユーザーが入力したティッカーを追加するために、別のモジュールがAddReadTickers.tickerWrite(ticker)を呼び出します。

4

2 に答える 2

2

初めに。

使用することをお勧めします

if not check(tick):

それ以外の

if check(tick) == False:

それで。使ったほうがいいと思います

writeTicker = open('Tickers.txt', 'a')

ホルダーはまったく必要ありません。

コードを書き直してみた

from __future__ import print_function

import re
import sys


def tickerWrite(tick):
    if not check(tick):
        with open('Tickers.txt', 'a') as writeTicker:
            print(tick.upper(), file=writeTicker)

def check(ticker):
    with open('Tickers.txt') as tList:
        for line in tList:
            return bool(re.search(ticker, line))

if __name__ == '__main__':
    tickerWrite(sys.argv[1])

私のように機能します。

于 2013-11-15T10:07:10.757 に答える