我有一个字符串列表:
List = ['aaa', 'bbb ccc', 'ddd (eee)']
我想将带括号的元素拆分为“(”之前的空白处,或者在前面没有空格的情况下拆分为“(”处的文本。但是在这种情况下,我想保留括号。提出了以下代码,如果有空格,这些代码可以工作:
for l in List:
if re.search('\(', l) != None:
a,b = re.split(' (?=\()', l)
print('True')
List_2.append(a)
List_2.append(b)
else:
List_2.append(l)
print(List_2)
两个问题:首先,是否有一个更清晰的版本,也许使用列表理解。 其次,如何捕获没有空白“ fff(ggg)”的案件。
最终列表应如下所示:
List_correct['aaa', 'bbb ccc', 'ddd', '(eee)', 'fff', '(ggg)']
答案 0 :(得分:3)
代码:
private String decodeHeader(String SAMLContent) {
try {
SAMLContent = URLDecoder.decode(SAMLContent, "UTF-8");
} catch (UnsupportedEncodingException ex) {
JOptionPane.showMessageDialog(null, "UEException: " + ex.getMessage());
}
byte[] deflatedBytes = Base64.getDecoder().decode(SAMLContent);
byte[] inflatedBytes = new byte[100*deflatedBytes.length];
Inflater compressor = new Inflater(true);
compressor.setInput(deflatedBytes, 0, deflatedBytes.length);
try {
int size = compressor.inflate(inflatedBytes);
} catch (DataFormatException ex) {
JOptionPane.showMessageDialog(null, "DFException: " + ex.getMessage());
}
try {
return new String(inflatedBytes, "UTF-8");
} catch (UnsupportedEncodingException ex) {
JOptionPane.showMessageDialog(null, "UEException: " + ex.getMessage());
}
JOptionPane.showConfirmDialog(null, "This shouln't be printed");
return null;
}
输出:
List = ['aaa', 'bbb ccc', 'ddd (eee)', 'fff(ggg)']
result = [subitem for item in List for subitem in re.split(r"(?:\b|\s)(?=\()", item)]