Pythonゼミ 第2回 文字列操作、テキストファイルの読み込み


Last updated: 2023/03/13

1 文字列操作


s1 = 'abc'
s2 = 'cba'
s3 = s1+s2
print(s3)
>>
abccba

s1 = ''
print(len(s1))
s2 = 'abc'
print(len(s2))
>>
0
3

s = 'abcdef'
print(s[0])
print(s[-1])
print(s[len(s)-1])
print(s[2:5])
>>
a
f
f
cde

s = 'abc123.4de'
print(s[3:6])
print(s[3:8])
print(int(s[3:6])*2)
print(float(s[3:8])*2)
>>
123
123.4
246
246.8

a = 3
b = 1.2
print(str(a)+str(b))
>>
31.2

s1 = 'abc'
s2 = 'abcd'
s2 = '123'
print(s1<s2)
print(s1<s3)
print(s2<s3)
>>
False
True
True

s = 'abc123.4de'
for i in range(len(s)):
    if s[i]>='0' and s[i]<='9':
        print(s[i], int(s[i])*10)
>>
1 10
2 20
3 30
4 40

上のコードと全く同じ。

s = 'abc123.4de'
for a in s:
    if a>='0' and a<='9':
        print(a, int(a)*10)
>>
1 10
2 20
3 30
4 40

for i in range(15):
    print(i, str(i).zfill(2))
>>
0 00
1 01
2 02
3 03
4 04
5 05
6 06
7 07
8 08
9 09
10 10
11 11
12 12
13 13
14 14

s = 'abc123.4de'
print(s.find('4'))
>>
7

s1 = 'abc123.4de'
s2 = s1.replace('4', 'd')
print(s2)
>>
abc123.dde

s = '1.2 2.3 3.4'
m = s.split()
print(m)
print(float(m[1])*10)
>>
['1.2', '2.3', '3.4']
23.0


2 テキストファイルの読み込み


いろんな方法がありますが、ここは一番汎用性が高い方法を紹介します。必ずしも一番簡単な方法ではないです。


以下のプログラムはpython02-1.txtを使います。
python02-1.txtをダウンロード:https://tingwu.info/pylab/data/python02-1.txt


このファイルをメモ帳で開いたら、最初の一部は


1)ファイルを開いて、一行目だけを読み込む

fid = open('F:/Course/python/python02-1.txt')
strLine = fid.readline()
fid.close()
print(strLine[-1])#一行の最後の文字は改行
print(strLine)
>>

RpQX2569TVHhjQDgJgpL

ファイル名について
ファイルが実際に保存されてる場所のフールパス

フォルダー名の間に、Windowsの場合は"\\"あるいは"/"を使う。Mac, Linuxの場合はいつも"/"を使う


2)全部読み込んで、各行の最初と最後の文字をプリントする

fid = open('F:/Course/python/python02-1.txt')
while True:
    strLine = fid.readline()
    if len(strLine)<2: #最後一行の長さは1(改行があれば)か0です
        break
    print(strLine[0], strLine[-2])
fid.close()
>>
R L
W Y
d r
r w
y y
H i
Z x
...
k H
P n
m G
L p
n s

変数の名前について

いつも自分にとって一番分かりやすい名前を付けてください。
a, b, x, yなどの名前は意味不明なので、プログラムが複雑になれば、なにを示すか分からなくなる。
上のプログラムに、fidという名前はfile IDを意味する
strLineというのは一行の文字列を意味する
このような名前を付ければ、それぞれの変数は何を示すかすぐ分かります。
ただし、一部の名前は既にPythonに使われているので、使ってはいけません。
例えば、max, min, sum, lenなど、プログラムに書けばオレンジや紫で表示されます。


ファイルの拡張子について

ファイルpython02-1.txtの拡張子はtxtです。 windowsではこのような拡張子は元々表示しません。 でも、プログラムでファイルを開くとき、拡張子は必ず必要です。 だから、拡張子を表示するよう設定しておいたほうがいいです。 設定する方法は検索すればすぐ分かります。


問題


1.上に使っていたファイルpython02-1.txtは、各行に一部は数字です。すべての数字に対して、一桁の数字として足し算を計算せよ。
2+5+6+9+6+7+6+4+…=?


2.ファイルpython02-1.txtの各行の数字に対して、一行の数字の部分は一つの数字として足し算を計算せよ。
2569+676+45+518+…=?


3.ファイルpython02-2.txtを使います。
このファイルには1万行10列計10万個の数字があります。
この中に一番大きいと一番小さい数字を特定せよ。
python02-2.txtをダウンロード:https://tingwu.info/pylab/data/python02-2.txt