나는 similar in Bash을 수행했으나 Ruby의 2-3 간결한 라인에서이를 수행하는 방법을 잘 모르지만 올바른 쿵 소리로 스냅 할 수는 있지만 -부. Ruby에서 CSV 헤더 행을 사용하여 변수를 만드는 방법
Ticker,"Price","Market Cap","Average Volume","Analyst Recom","Relative Strength Index (14)","Sector","Industry","Dividend Yield","Beta","52-Week Low","52-Week High","50-Day Low","50-Day High","Company","50-Day Simple Moving Average","Country","P/E","Forward P/E","PEG","P/S","P/B","P/Cash","P/Free Cash Flow","Payout Ratio","EPS (ttm)","EPS growth this year","EPS growth next year","EPS growth past 5 years","EPS growth next 5 years","Sales growth past 5 years","EPS growth quarter over quarter","Sales growth quarter over quarter","Shares Outstanding","Shares Float","Insider Ownership","Insider Transactions","Institutional Ownership","Institutional Transactions","Float Short","Short Ratio","Return on Assets","Return on Equity","Return on Investment","Current Ratio","Quick Ratio","LT Debt/Equity","Total Debt/Equity","Gross Margin","Operating Margin","Profit Margin","Performance (Week)","Performance (Month)","Performance (Quarter)","Performance (Half Year)","Performance (Year)","Performance (Year)","Average True Range","Volatility (Week)","Volatility (Month)","20-Day Simple Moving Average","200-Day Simple Moving Average","Change from Open","Gap","Relative Volume","Change","Volume","Earnings Date","No."
의 모습에 대한 7000 선 다음 :
나는처럼 보이는 헤더 행에 "file.csv"가
FCD,27.89,,0.94,,66.75,"Financial","Exchange Traded Fund",3.13%,,19.75%,-0.36%,6.37%,-0.36%,"Focus Morningstar Consumer Defensive ETF",2.28%,"USA",,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,0.36%,3.07%,9.93%,10.85%,,2.01%,0.12,0.04%,0.21%,1.26%,6.69%,0.00%,-0.04%,0.96,-0.04%,900,,2186
FCE-A,14.59,2496.64,960.33,2.50,54.76,"Financial","Property Management",,2.83,56.55%,-24.87%,36.61%,-7.77%,"Forest City Enterprises Inc.",11.49%,"USA",,69.48,,2.2
5,1.58,10.87,,,-0.02,410.77%,250.00%,-10.06%,8.00%,1.54%,-28.77%,-9.00%,171.12,136.94,0.26%,-8.25%,74.80%,-0.13%,4.62%,6.59,0.46%,-0.12%,0.54%,,,4.35,4.35,39.54%,
4.82%,4.60%,-4.01%,8.96%,25.45%,13.10%,-22.80%,23.43%,0.44,3.07%,2.98%,-0.89%,1.49%,-1.62%,0.00%,0.47,-1.62%,449874,12/8/2010 4:30:00 PM,2187
시세 기호 "FCD"을 감안할 때, 헤더 필드에서 가져온 약 30 개의 새로운 변수를 "FCD"행과 일치하는 값으로 대량 할당하려고합니다.
각 새 변수 앞에는 fv_
이라는 접두어가 붙고 나머지는 필드 이름에서 모든 구두점, 공백, 따옴표 등을 뺀 것 (변수가 아닌 것)입니다.
내가 읽는 분이 걸렸다 및 CSV.read
의 종류 또는 horrible slowdown using native Ruby 1.9.x CSV objects로 인해 CSV.foreach
를 사용하여 종료하는 것이주의해야한다 따라서 받아 들일 수
fv_Ticker="FCD"
fv_Price=27.89
fv_MarketCap=""
fv_VolatilityMonth=0.21 # if get String not Float because of trailing % in "0.21%" that's okay, will deal with it later
etc.
"FCD는"나는 내 스크립트를 제공하기 위해 노력하고 그래서 위해
반복적으로 실행되는 실시간 응용 프로그램에서
$stock="FCD"
$dividend_yield = IO.readlines("|awk -F, '$1==\"#{$stock}\" {print $9}' finviz.AllStocks.csv")[0].to_f
$beta = IO.readlines("|awk -F, '$1==\"#{$stock}\" {print $10}' AllStocks.csv")[0].to_f
을하지만 지금은 일반화 너무 털이 점점 :
대신이 같은 즉시 파일 에서 읽을 개별 변수를 할당하는 'AWK'에 루비 파이프를 사용했습니다. 첫 번째 행이 보일 때까지 알 수없는 필드가있는 CSV와 유사한 파일을 사용해야합니다.
왜 변수가 필요합니까? 왜'{ "FCD"=> someObject}'의 해쉬가 아닌가? – Linuxios
해시가 더 좋지는 않을지라도 빠른 것이어야합니다. [이전에] (http://stackoverflow.com/q/8476769/1069375) 루비로 CSV를 읽는 것이 실패했습니다. – Marcos
변수를 사용하여 기호 테이블을 채우는 것은 해시보다 효율적일 수 없습니다. 또한 무엇이든 전역 변수를 사용하는 것은 좋은 생각이 아닙니다. – Linuxios