与前一个问题有关: Python3 和发电机 分开()
是否有一种方法使用生成器或迭代器分割列表, 但比创建正则表达式更有效?
我想". split ()" 并不是用常规表达式执行的 。
我很想看到相等的, 但不要在记忆中创建完整的分裂列表, 但“在空中”与发电机或迭代器。
与前一个问题有关: Python3 和发电机 分开()
是否有一种方法使用生成器或迭代器分割列表, 但比创建正则表达式更有效?
我想". split ()" 并不是用常规表达式执行的 。
我很想看到相等的, 但不要在记忆中创建完整的分裂列表, 但“在空中”与发电机或迭代器。
这似乎比正则要快一点:
def itersplit2(s, sep):
i = 0
l = len(sep)
j = s.find(sep, i)
while j > -1:
yield s[i:j]
i = j + l
j = s.find(sep, i)
else:
yield s[i:]
但10倍于 str.split
以下是与 None 不同的分隔符版本 :
def iter_split(s, sep):
start = 0
L = len(s)
lsep = len(sep)
assert lsep > 0
while start < L:
end = s.find(sep, start)
if end != -1:
yield s[start:end]
start = end + lsep
if start == L:
yield # sep found but nothing after
else:
yield s[start:] # the last element
start = L # to quit the loop
我没有认真测试它, 所以它可能包含一些错误。 与 < code>str.split () code > 相比的结果 :
sep = <>
s = 1<>2<>3
print( -------------- , repr(s), repr(sep))
print(s.split(sep))
print(list(iter_split(s, sep)))
s = <>1<>2<>3<>
print( -------------- , repr(s), repr(sep))
print(s.split(sep))
print(list(iter_split(s, sep)))
sep =
s = 1 2 3
print( -------------- , repr(s), repr(sep))
print(s.split(sep))
print(list(iter_split(s, sep)))
s = 1 2 3
print( -------------- , repr(s), repr(sep))
print(s.split(sep))
print(list(iter_split(s, sep)))
它显示:
-------------- 1<>2<>3 <>
[ 1 , 2 , 3 ]
[ 1 , 2 , 3 ]
-------------- <>1<>2<>3<> <>
[ , 1 , 2 , 3 , ]
[ , 1 , 2 , 3 , ]
-------------- 1 2 3
[ 1 , 2 , 3 ]
[ 1 , 2 , 3 ]
-------------- 1 2 3
[ 1 , , , 2 , , , 3 ]
[ 1 , , , 2 , , , 3 ]
默认 < code> noone 分隔符的安装将更加复杂,因为有更多的规则。
总之, 预编的正则表达式相当有效 。 当写入时它们容易出错, 但一旦准备好, 它们就会快速 。
I have a simple problem that says: A password for xyz corporation is supposed to be 6 characters long and made up of a combination of letters and digits. Write a program fragment to read in a string ...
The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?
I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...
I tried to print all the possible combination of members of several vectors. Why the function below doesn t return the string as I expected? #include <iostream> #include <vector> #...
I m trying to initialize string with iterators and something like this works: ifstream fin("tmp.txt"); istream_iterator<char> in_i(fin), eos; //here eos is 1 over the end string s(in_i, ...
I have a string "pc1|pc2|pc3|" I want to get each word on different line like: pc1 pc2 pc3 I need to do this in C#... any suggestions??
Is there a PHP string function that transforms a multi-line string into a single-line string? I m getting some data back from an API that contains multiple lines. For example: <p>Some Data</...
I was trying to speed up a certain routine in an application, and my profiler, AQTime, identified one method in particular as a bottleneck. The method has been with us for years, and is part of a "...