0

所以我有一行这样的文本被读入我的程序:

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

我想在第一个特殊字符处将其一分为二。大多数情况下,该行由“@”符号分隔,但在某些情况下会出现不同的字符。('~', '+', '#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

一种方法是检查是否出现任何特殊字符。让我们存储变量中出现的第一个特殊字符specialChar。您现在可以调用line.partition(specialChar).

于 2013-07-16T08:59:12.053 回答