Skip to main content

Slice a list of sliceables (1 indexed, start and end index both are inclusive)

Project description

Build Status

This package provides Python module to slice a list of sliceables (1 indexed, both start and end index are inclusive). Helps to slice file content line by line or column by column or a combination of both.

Install

Install from Pypi:

pip install rcslice

Usage

from rcslice import RowSlice

rs = RowSlice()

list_of_sliceables = rs.slice(list_of_sliceables, '1-2,2.4-4.5,8-2.6')

Slicing syntax

Below, r is the row number, and c is the column number. All indexes are inclusive and 1 indexed.

r.c-r.c
r.c-r.c,r.c-r.c,...
.c-.c       [not specifying both r means slice on every row for the columns]
1.c-.c      [not specifying r means the last row when another r is specified]
.c-1        [last row.c to first row, reversion]
r           [only r'th row]
r1-r2       [when both r is not the same, not specifying c means the first c for start index and last c for end index]
r1-r2.c     [first c of r1 to r2.c]
r1.c-r2     [r1.c to last c of r2]
r-r.c       [when both r is the same, not specifying one c will mean the last c]
r-r         [when both r is the same, not specifying both c means the first c for start index and last c for end index]
e.c-e.c     [e means last row]
e-e         [last row]
e-e.c       [last c of e to e.c]
e.c-e       [e.c to last c of e]
e.e-e.e     [same as e-e, e in column is stripped off]

The e to specify the last row is exclusively for row only. Do keep in mind that the class name is RowSlice. It gives special priority on row and not just with the special character e. You will see some major difference in how r and c works in above syntax explanation.

For multiple slice syntax r.c-r.c,r.c-r.c,..., a separator will be inserted between each slice. You can set the separator by passing it during class object instantiation:

rs = RowSlice(['I am a separator'])

This separator is also a list of something.

Examples

An example of slicing a file content read by readlines():

import os
from rcslice import RowSlice

def get_file_lines(filename):
    content = []
    try:
        with open(os.path.join(os.path.dirname(__file__), filename), 'r') as f:
            content = f.readlines()
    except OSError as e:
        raise
    return content


rs = RowSlice(['','']) # ['',''] will add 2 new lines for multi slice syntax (e.g 1-2,3-4,...)

list_of_lines = get_file_lines('test.txt')

print("before: ", list_of_lines)

list_of_lines = rs.slice(list_of_lines, '1-2,1.2-4.5,3.4-1.3,.4-.9')

print("after: ", list_of_lines)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rcslice-1.1.0.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

rcslice-1.1.0-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file rcslice-1.1.0.tar.gz.

File metadata

  • Download URL: rcslice-1.1.0.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5

File hashes

Hashes for rcslice-1.1.0.tar.gz
Algorithm Hash digest
SHA256 a2ce70a60690eb63e52b722e046b334c3aaec5e900b28578f529878782ee5c6e
MD5 f7eb60b25181b14ee8cc54996bdc3c99
BLAKE2b-256 533eabe47d91d5340b77b003baf96fdf8966c946eb4c5a704a844b5d03e6e578

See more details on using hashes here.

File details

Details for the file rcslice-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: rcslice-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5

File hashes

Hashes for rcslice-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b12fc0c0ca452e8a9fd2b56ac008162f19e250906a4290a7e7a98be3200c2a6
MD5 faef6a2d99fdcec5e5484422613d9fd6
BLAKE2b-256 aa967935186fba032312eb8a75e6503440b0e6de76c901421f791408e4debd93

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page