Python 任意字符的正则表达式
假设我有一个由任何符号组成的文本,比如:Python 任意字符的正则表达式,python,regex,Python,Regex,假设我有一个由任何符号组成的文本,比如: string=1234abdchdj星期上午十时*&() 我想用正则表达式查找字符bi-grams,以获得如下输出: 12,23,34,ab,bd,… 实际上,我使用的是python和regex: bigrams=re.findall(“(?=(\S\S))”,string) 但这给了我错误的输出,因为它遗漏了字符,实际上给了我所需的bi图的一半: 12,34,ab,dc,… 希望我说得够清楚,提前谢谢你你可以试试: s = 'abcdef' for i
string=1234abdchdj星期上午十时*&()
我想用正则表达式查找字符bi-grams,以获得如下输出:
12,23,34,ab,bd,…
实际上,我使用的是python
和regex
:
bigrams=re.findall(“(?=(\S\S))”,string)
但这给了我错误的输出,因为它遗漏了字符,实际上给了我所需的bi图的一半:
12,34,ab,dc,…
希望我说得够清楚,提前谢谢你你可以试试:
s = 'abcdef'
for i in range(len(s)-1):
print(s[i:i+2])
或者更好:
s = 'abcdef'
a = ''
for b in s:
if a:
print(a+b)
a = b
另一种选择是使用,这可能是最适合做这件事的方法
string=“1234abdchdj星期上午十时*&()"
对于zip中的a,b(string,string[1:]):
印刷品(a、b)
根据要对最后一个字符执行的操作)
,您还可以使用:
从itertools导入zip\u
对于zip_中最长的a、b(字符串,字符串[1:],fillvalue=“-”):
印刷品(a、b)
将打印与在末尾添加包含)-
的行之前相同的内容
如果您需要节省一点内存,您甚至可以使用:
从itertools导入islice
string=“1234abdchdj星期上午十时*&()"
对于zip中的a,b(字符串,islice(字符串,1,无)):
印刷品(a、b)
经典切片
[1://code>创建第二个数组,而这将在同一数组上创建迭代器。但是,除非您真的需要保存此内存,否则我将坚持使用string[1://code> 如果不是不可能的话,这将非常困难,因为您正试图使用正则表达式来解决它不打算解决的问题。您可以在python的一行代码中非常清晰地完成这项工作
ans=[x[i:i+2]表示i在范围(0,len(x)-1,2)]
这将更容易使用for循环,有什么原因需要re吗?是的,我确实在循环,并且工作正常。然后我开始使用正则表达式,我发现这是我能做的最干净的事情。如果你真的想使用re,我想你可以使用上面的结果,只打印偶数的结果,所以你不需要?这些比赛缺少什么?@第四鸟谢谢,我不知道为什么我的系统会给我这个输出。也许代码的另一部分与此相关,但我没有意识到。