Scala: добавить значение в конце каждой строки, кроме последней строки в файле - PullRequest
0 голосов
/ 17 сентября 2018

Я новичок в скале. Есть сценарий, в котором нам нужно добавить значение в конце каждой строки, кроме последней строки в файле. Иметь написанный код на Python и его работу. Я пытаюсь реализовать то же самое в Scala без успеха. Пожалуйста, помогите.

def create_ddl():
    with open('C:\\Downloads\\output.csv', 'r') as istr:
            lines = istr.readlines()
            last = lines[-1]

            create='CREATE TABLE '+table_name+ ' ( '
            reformat="ROW FORMAT DELIMITED \n FIELDS TERMINATED BY ‘\\t’ \n LINES TERMINATED BY ‘\\n’;"
            with open('C:\\Downloads\\final_output_success.csv', 'w') as ostr:
                    print(create, file=ostr)
                    for line in lines:
                            if line is last:
                                    print(line, file=ostr)
                            else:
                                    line = line.rstrip('\n') + ','
                                    print(line, file=ostr)
                    print(')', file=ostr)
                    print(reformat, file=ostr)

1 Ответ

0 голосов
/ 19 сентября 2018

Похоже, вы пытаетесь получить имена столбцов из файла и добавить запятую между ними, чтобы получить синтаксис "создать таблицу". Вы можете сделать это с помощью функции mkString.

Вот мой контент в директории Windows Temp.

C:\Users\winos>type temp\cols.txt
col1
col2
col3
col4

C:\Users\winos>
C:\Users\winos>scala
Welcome to Scala version 2.11.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val x = scala.io.Source.fromFile("temp\\cols.txt").getLines
x: Iterator[String] = non-empty iterator

scala> x.mkString(",")
res0: String = col1,col2,col3,col4

scala>

Если у вас есть данные в массиве, они работают точно так же

scala> val arr = Array("cola","colb","colc")
arr: Array[String] = Array(cola, colb, colc)

scala> arr.mkString("|")
res4: String = cola|colb|colc

scala>
...