Хотите отклонить первые три строки и точку (.) В каждой строке, используя tcl / Tcl или Python - PullRequest
1 голос
/ 11 марта 2020

Я хочу вывод, исключая первые три строки и точку (.) В конце строки.

Я использую этот код.

set content [split $content \n]
set content [lrange $content 2 end]
set content [join $content \n]

Содержимое - Ввод

{180319 arun S B} first set of chars. first chars.
{180316 yyay S B} second set of chars. second line.
{180314 ramaw S B} third line. third line. third line.
{180309 jfds S B} fouth line.
{180221 shrbsd S B} fifth line.fith line part 2.
{180214 shrbs S B} sixth line.

Ожидаемый результат

{180309 jfds S B} fouth line
{180221 shrbsd S B} fifth line.fith line part 2
{180214 shrbs S B} sixth line

Ответы [ 3 ]

0 голосов
/ 11 марта 2020

Используя Tcl, я бы использовал al oop, так как вам нужно манипулировать отдельными строками:

set content [split $content \n]
set result [list]

for {set i 0} {$i <= [llength $content]} {incr i} {
    if {$i < 3} continue
    lappend result [regsub {\.$} [lindex $content $i] ""]
}

set result [join $result \n]
puts $result

демо ideone


эквивалент в python:

import re

content = content.splitlines()
result = []

for i in range(0, len(content)):
    if i < 3:
        continue
    result.append(re.sub(r"\.$", "", content[i]))


print("\n".join(result))

ideone demo

0 голосов
/ 11 марта 2020

Еще один дубль, используя lmap

set result [lmap line [lrange [split $content \n] 3 end] {
    string trimright $line "."
}]
puts [join $result \n]
0 голосов
/ 11 марта 2020

Комбинация lrange с правильным диапазоном и regsub:

set content "{180319 arun S B} first set of chars. first chars.
{180316 yyay S B} second set of chars. second line.
{180314 ramaw S B} third line. third line. third line.
{180309 jfds S B} fouth line.
{180221 shrbsd S B} fifth line.fith line part 2.
{180214 shrbs S B} sixth line."

set content [join [lrange [split $content "\n"] 3 end] "\n"]
regsub -all -lineanchor {\.$} $content "" content
puts $content

Хитрый бит - это опция -lineanchor для regsub, что делает $ совпадать в точках прямо перед символами новой строки, встроенными в строку, а не только в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...