루비에서 해쉬를 사용하고 있습니다. 특정 단어가 "쌍"클래스에 있는지 확인하고 바꿉니다. 처음에 저는 파이썬으로 코드를 작성하고 그것을 익숙하지 않은 루비로 변환하려고합니다. 여기 제가 작성한 루비 코드가 있습니다.루비에서 해시하고 파이썬을 루비로 변환
import sys
pairs = dict()
pairs = {'butter': 'flies', 'cheese': 'wheel', 'milk': 'expensive'}
for line in sys.stdin:
line = line.strip()
line_words = line.split(" ")
for word in line_words:
if word in pairs:
line = line.replace(word ,pairs[word])
print line
이 때문에 "수입 SYS"또는 "들여 쓰기"의인가 아래 권리 원래 파이썬 스크립트이지만
import sys
pairs = {'butter' => 'flies', 'cheese' => 'wheel', 'milk'=> 'expensive'}
for line in sys.stdin:
line_words = line.split(" ")
for word in line_words:
if word in pairs
line = line.gsub!(word, pairs[word])
puts line
그것은 다음과 같은 오류를
syntax error, unexpected kIN, expecting kTHEN or ':' or '\n' or ';'
if word in pairs
^
을 보여줍니다?
감사합니다. kardeiz! 루비가 "넣는"행의 유형은 무엇입니까? 배열입니까? 행 단위로 한 단어 씩 인쇄하기 때문에 두 행을 분리했는지 궁금합니다. 그래도 전체 라인을 뽑아 내고 싶다면 어떻게해야합니까? line.join ("")은 문제를 해결할 수 없습니다. – user2592038
안녕하세요! 입력시 따옴표를 붙일 때 차이점을 발견했습니다. 예를 들어, "this is butter"라고 입력하려고하면 "this is butter"라고 인쇄됩니다. "이것이 버터입니다" "이면 출력은"이것은 파리 "입니다. 차이점은 무엇입니까? 그리고 서버에 코드를 넣을 때 "this is butter": String (NoMethodError) "에 대한 정의되지 않은 메서드'map '이라는 오류가 있습니다. – user2592038
변환 할 문자열을 인수의 시퀀스 또는 하나의 인용 부호로 묶을 수 있도록 스크립트를 약간 수정했습니다 :'ARGV.join ('') .split ('')', arg 배열을 공백으로 분리 한 다음 공백으로 분리합니다. 두 번째 문제에 대해 잘 모르겠습니다. 스크립트가 호출되는 컨텍스트는 무엇입니까? 오류는 'ARGV'가 문자열로 해석되지만 ARGV는 항상 배열이어야합니다 (비어있는 경우에도 마찬가지). –