Python3 について

Python3 について

文字列を 2 つに分割し、順番に印刷したいと思います。例:

abcdef

の中へ

abc
def

それを実行する簡単な方法はありますか、それとも何らかの文字列処理が必要ですか?

答え1

使用パラメータ拡張そしてシェル演算:

変数の前半は次のようになります。

${var:0:${#var}/2}

変数の後半は次のようになります。

${var:${#var}/2}

つまり、次のように使用できます。

printf '%s\n' "${var:0:${#var}/2}" "${var:${#var}/2}"

次の awk コマンドを使用することもできます。

awk 'BEGIN{FS=""}{for(i=1;i<=NF/2;i++)printf $i}{printf "\n"}{for(i=NF/2+1;i<=NF;i++){printf $i}{printf "\n"}}'

$ echo abcdef | awk 'BEGIN{FS=""}{for(i=1;i<=NF/2;i++)printf $i}{printf "\n"}{for(i=NF/2+1;i<=NF;i++){printf $i}{printf "\n"}}'
abc
def

答え2

split、ここでは文字列とコマンド置換を使用します:

var=abcdef
printf '%s\n' "$(split -n1/2 <<<$var)" "$(split -n2/2 <<<$var)"

答え3

別のawkスクリプトは次のようになります。

echo abcdef | awk '{print substr($0,1,length/2); print substr($0,length/2+1)}'

答え4

Python3 について

s = input()  # Take one line of input from stdin.
x = len(s) // 2  # Get middle of string. "//" is floor division
print(s[:x], s[x:], sep="\n")  # Print "s" up to "x", then "s" past "x", joined on newlines.

例えば、

$ echo abcdef | python3 -c 's = input(); x = len(s) // 2; print(s[:x], s[x:], sep="\n")'
abc
def

文字列の長さが偶数でない場合は、2行目が長くなります。例:

$ echo abcdefg | python3 -c 's = input(); x= len(s) // 2; print(s[:x], s[x:], sep="\n")'
abc
defg

関連情報