Как вы отфильтровываете «свободу», кроме как с такими критериями, как «наследие», «ulic» и т. д.
df_Fixed[~df_Fixed["Busler Group"].map(lambda x: x.startswith('Liberty'))]
Вы можете сделать это следующим образом:
String s = "1234567890";
System.out.println(java.util.Arrays.toString(s.split("(?<=\\G...)")));
, который производит:
[123, 456, 789, 0]
Регулярное выражение (?<=\G...)
соответствует пустой строке, которая имеет последнее совпадение (\G
), за которым следуют три символа (...
) перед ним ((?<= )
)
В качестве дополнения к ответа Bart Kiers я хочу добавить, что вместо использования трех точек ...
в выражении регулярных выражений, которые представляют три символа, вы можете написать .{3}
, которые имеет тот же смысл.
Тогда код будет выглядеть следующим образом:
String bitstream = "00101010001001010100101010100101010101001010100001010101010010101";
System.out.println(java.util.Arrays.toString(bitstream.split("(?<=\\G.{3})")));
С этим было бы проще изменить длину строки, и создание функции теперь разумным с переменной длиной входной строки. Это может быть сделано следующим образом:
public static String[] splitAfterNChars(String input, int splitLen){
return input.split(String.format("(?<=\\G.{%1$d})", splitLen));
}
Пример в IdeOne: http://ideone.com/rNlTj5
Java не предоставляет очень полнофункциональных утилит расщепления, поэтому библиотеки Guava делают:
Iterable<String> pieces = Splitter.fixedLength(3).split(string);
Проверьте Javadoc for Splitter ; это очень мощный.
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
for (String part : getParts("foobarspam", 3)) {
System.out.println(part);
}
}
private static List<String> getParts(String string, int partitionSize) {
List<String> parts = new ArrayList<String>();
int len = string.length();
for (int i=0; i<len; i+=partitionSize)
{
parts.add(string.substring(i, Math.min(len, i + partitionSize)));
}
return parts;
}
}
\G
, и Python не будет разделяться на регулярное выражение, которое соответствует нулевым символам. Но тогда, если у Java был «получить все соответствия», метод, как и любой другой язык, вам не пришлось бы придумывать этот трюк, в первую очередь, @Bart. ;) – Alan Moore 20 February 2010 в 01:24