所以我有一行这样的文字读入我的程序:
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
如何将此更改为适用于显示在特殊字符列表中的第一个?
答案 0 :(得分: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']
答案 1 :(得分: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))
答案 2 :(得分:0)
一种方法是检查是否出现任何特殊字符。让我们存储变量specialChar
中出现的第一个特殊字符。您现在可以拨打line.partition(specialChar)
。