mirror of
				https://github.com/explosion/spaCy.git
				synced 2025-10-31 16:07:41 +03:00 
			
		
		
		
	Add slicing support to Span
This commit is contained in:
		
							parent
							
								
									5cc2f2b01a
								
							
						
					
					
						commit
						97685aecb7
					
				|  | @ -50,7 +50,26 @@ cdef class Span: | ||||||
|             return 0 |             return 0 | ||||||
|         return self.end - self.start |         return self.end - self.start | ||||||
| 
 | 
 | ||||||
|     def __getitem__(self, int i): |     def __getitem__(self, object i): | ||||||
|  |         if isinstance(i, slice): | ||||||
|  |             start, end, step = i.start, i.stop, i.step | ||||||
|  |             if start is None: | ||||||
|  |                start = 0 | ||||||
|  |             elif start < 0: | ||||||
|  |                start += len(self) | ||||||
|  |             start = min(len(self), max(0, start)) | ||||||
|  | 
 | ||||||
|  |             if end is None: | ||||||
|  |                end = len(self) | ||||||
|  |             elif end < 0: | ||||||
|  |                end += len(self) | ||||||
|  |             end = min(len(self), max(start, end)) | ||||||
|  | 
 | ||||||
|  |             start += self.start | ||||||
|  |             end += self.start | ||||||
|  | 
 | ||||||
|  |             return self.doc[start:end:i.step] | ||||||
|  | 
 | ||||||
|         if i < 0: |         if i < 0: | ||||||
|             return self.doc[self.end + i] |             return self.doc[self.end + i] | ||||||
|         else: |         else: | ||||||
|  |  | ||||||
|  | @ -59,6 +59,24 @@ def test_getitem(EN): | ||||||
| 
 | 
 | ||||||
|     span = tokens[1:4] |     span = tokens[1:4] | ||||||
|     assert span[0].orth_ == 'it' |     assert span[0].orth_ == 'it' | ||||||
|  |     subspan = span[:] | ||||||
|  |     assert to_str(subspan) == 'it/back/!' | ||||||
|  |     subspan = span[:2] | ||||||
|  |     assert to_str(subspan) == 'it/back' | ||||||
|  |     subspan = span[1:] | ||||||
|  |     assert to_str(subspan) == 'back/!' | ||||||
|  |     subspan = span[:-1] | ||||||
|  |     assert to_str(subspan) == 'it/back' | ||||||
|  |     subspan = span[-2:] | ||||||
|  |     assert to_str(subspan) == 'back/!' | ||||||
|  |     subspan = span[1:2] | ||||||
|  |     assert to_str(subspan) == 'back' | ||||||
|  |     subspan = span[-2:-1] | ||||||
|  |     assert to_str(subspan) == 'back' | ||||||
|  |     subspan = span[-50:50] | ||||||
|  |     assert to_str(subspan) == 'it/back/!' | ||||||
|  |     subspan = span[50:-50] | ||||||
|  |     assert subspan.start == subspan.end == 4 and not to_str(subspan) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @pytest.mark.models | @pytest.mark.models | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user