Pythonで「SyntaxError: Non-ASCII character」というエラーの対処

April 9,2019 11:55 PM
Category:[Python]
Tag:[Python]
Permalink

Pythonで「SyntaxError: Non-ASCII character」というエラーの対処について紹介します。

1.問題点

Pythonで下記のようなスクリプトを書きました。

test.py

#!/usr/bin/env python2
print 'テスト'

このスクリプトを実行したところ、下記の「SyntaxError: Non-ASCII character」というエラーに遭遇しました。

$ ./test.py
  File "./test.py", line 3
SyntaxError: Non-ASCII character '\xe3' in file ./test.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

2.「SyntaxError: Non-ASCII character」というエラーの対処

このエラーを解消するには、ファイルに下記の1行を追加します。

test.py

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
print 'テスト'

実行結果

テスト

この

# -*- coding: utf-8 -*-

という行は、

あるいは下記の記述でもOKです。

#!/usr/bin/env python2
# coding:utf-8
print 'テスト'

または、

#!/usr/bin/env python2
# coding=utf-8
print 'テスト'

3.注意事項

サンプルのようにshebang行がある場合は、その直後(2行目)に記述してください。

下記のように行を空けて記載するとエラーが解消されないようです。

test.py

#!/usr/bin/env python2
 
# -*- coding: utf-8 -*-
print 'テスト'
Comments [0] | Trackbacks [0]

Pythonで文字列を取得する方法

March 29,2019 12:03 AM
Category:[Python]
Tag:[Python]
Permalink

Pythonで文字列を取得する方法を紹介します。

1.問題点

Pythonで次の文字を定義しました。

str = '0100AF85A0202C5D'

この文字列から「85A0」を取得したいのですが方法が分かりません。

ということで、Pythonで文字列を取得する方法を紹介します。

2.文字列を取得する

文字列を取得するにはスライス機能を利用します。

test.py

str = '0100AF85A0202C5D'
print str[6:10]

実行結果

85A0

スライスとは、文字列の特定部分を切り出すことで、フォーマットは次のようになっています。

変数名[i:j:k]

i,j,kの意味は次のとおりです。

  • i:取得文字列の開始位置
  • j:取得文字列の終了位置-1
  • k:スキップする数(今回は説明省略)

今回はiに6、jに10を設定しているので、文字列の6番目から10-1=9番目までを取得します。

他の言語では第2パラメータは文字の位置ではなく取得する文字数を設定する場合もあるので、間違えないように気をつけましょう。

Comments [0] | Trackbacks [0]

Perlのハッシュでキーの有無を調べる方法

March 19,2019 12:03 AM
Category:[Perl]
Tag:[Perl]
Permalink

Perlのハッシュでキーの有無を調べる方法を紹介します。

1.問題点

Perlで下記のようなハッシュを作成しました。

my $hash;
 
$hash->{orange} = 1;
$hash->{grape} = 1;
$hash->{apple} = 1;

このハッシュに"apple"というキーが存在するか調べたいのですが、方法がわかりません。

ということで、ハッシュにキーが存在するか調べる方法を紹介します。

2.ハッシュにキーが存在するか調べる

ハッシュにキーが存在するか調べるには、exists関数を使用します。

#!/usr/bin/perl
 
use strict;
 
my $hash;
$hash->{orange} = 1;
$hash->{grape} = 1;
$hash->{apple} = 1;
 
if ( exists $hash->{apple} ) {
    print "exist";
} else {
    print "no exist";
}

"apple"はキーに存在するので、実行結果は、

exist

となります。

if文に記述したハッシュキーを、存在しない任意の文字列に変更してみます。

#!/usr/bin/perl
 
use strict;
 
my $hash;
$hash->{orange} = 1;
$hash->{grape} = 1;
$hash->{apple} = 1;
 
if ( exists $hash->{abc} ) {
    print "exist";
} else {
    print "no exist";
}

"abc"はキーに存在しないので、実行結果は、

no exist

となります。

Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages