0

したがって、次のようなテキスト行がプログラムに読み込まれます。

00001740 n 3 eintiteas aonán beith 003 @ 00001930 n 0000 ~ 00002137 n 0000 ~ 04424418 n 0000

そして、最初の特殊文字でそれを 2 つに分割したいと思います。ほとんどの場合、行は「@」記号で分割されますが、場合によっては別の文字が表示されます。(「~」、「+」、「#p」、「#m」、「%p」、「=」)。

これまでのところ、「@」文字で機能しています。

def split_pointer_part(self, line):
    self.before_at, self.after_at = line.partition('@')[::2]
    return self.before_at, self.after_at

特殊文字のリストから最初に表示される文字に対して機能するように変更するにはどうすればよいですか?

4

3 に答える 3

2

正規表現を使用できます。

>>> import re
>>> line = "00001740 n 3 eintiteas aonán beith 003 @ 00001930 n 0000 ~ 00002137 n 0000 ~ 04424418 n 0000"
>>> re.split(r'(?:#p|#m|%p|[@~+=])', line, 1)
['00001740 n 3 eintiteas aon\xc3\xa1n beith 003 ', ' 00001930 n 0000 ~ 00002137 n 0000 ~ 04424418 n 0000']
于 2013-07-16T08:55:02.560 に答える
0

re.splitを見てください。通常の分割と同じように機能しますが、正規表現を受け入れます。

例:

import re
string = "00001740 n 3 eintiteas aonán beith 003 @ 00001930 n 0000 ~ 00002137 n 0000 ~      04424418 n 0000"
print(re.split(r'\@|\~|\+|\#p|\#,|\%p|\=', string))
于 2013-07-16T08:59:05.810 に答える
0

1 つの方法は、特殊文字が出現するかどうかを確認することです。変数に出てきた最初の特殊文字を格納しましょうspecialChar。を呼び出すことができますline.partition(specialChar)

于 2013-07-16T08:59:12.053 に答える