Skip to main content

Strings to Positions

This library takes in the source text and a list of strings (or chunks) that occurs in the source text, the library will return either a list of offsets or a list of positions, the same length of the input list.

How to Use

Install

pip install strings-to-positions

Usage Example

from strings_to_positions import to_offsets, to_strings, offset_to_position

# The Source Document
source_document = """# Introduction to Markdown

Markdown is a _lightweight **markup language** with plain-text_ formatting syntax. Its design allows it to be converted to many output formats, but the original tool by the same name only supports HTML.
Its design allows it to be converted to many output formats, but the original tool by the same name only supports HTML.

## Common Syntax
One common syntax is the one used by GitHub, which is a superset of the original Markdown syntax. It includes features such as tables, strikethrough, and task lists.
"""

# A list of strings, typically the output of a text splitter function
chunks = ["""# Introduction to Markdown

Markdown is a _lightweight **markup language** with plain-text_ formatting syntax. Its design allows it to be converted to many output formats, but the original tool by the same name only supports HTML.
Its design allows it to be converted to many output formats,""",
"""but the original tool by the same name only supports HTML.

## Common Syntax
One common syntax is the one used by GitHub, which is a superset of the original Markdown syntax. It includes features such as tables, strikethrough, and task lists.
"""
]

# Run the to_offsets function will output the offset positions of each chunk
offsets = to_offsets(source_document, chunks)
# offsets = [(0, 291), (292, 535)]

# Optionally you can set a third argument to configure the searching parameter.
# See below for details
# option = {
#   "case_sensitive": True, 
#   "allow_overlap": True, 
#   "overlap_size": None
# }
# offset = to_offsets(source_document, chunks, option)


# Run the offset_to_position in a loop will give you the list of positions
positionsList = []
for offset in offsets:
    if offset is None:
        positionsList.append(None)
        continue
    position = offset_to_position(document, offset)
    # position = {
    #    "start": {"line": 1, "column": 1, "offset": 0},
    #    "end": {"line": 4, "column": 61, "offset": 291},
    # }
    positionsList.append(position)

# ... later, after the offsets have been changed...
# new_offsets = [(0, 293), (294, 535)]

new_chunks = to_strings(source_document, new_offsets)

# new_chunks will be a new list of strings that correspond with the new_offsets

Input Options

case_sensitive (True | False)

If True, the function will consider casing during the search

allow_overlap (True | False)

If True, the searching function will consider the entire previous chunk in sub document to be searched. If overlap_size is set, then overlap will only consider the set size

overlap_size (int | None)

Ignored if allow_overlap is False.
Sets the size of the maximum overlap size

Output Data Structure

Offset

Tuple[startOffset, endOffset]

Position

{
  start: {
    line: "1-index int",
    column: "1-index int",
    offset: int
  },
  end: {
    line: "1-index int",
    column: "1-index int",
    offset: int
  }
}

Metadata

Release files for strings-to-positions 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for strings-to-positions 1.1.1
File Size Uploaded
strings_to_positions-1.1.1.tar.gz 13.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for strings-to-positions 1.1.1
File Interpreter ABI Platform
strings_to_positions-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 17.7 kB

Release files / strings_to_positions-1.1.1.tar.gz

Download URL strings_to_positions-1.1.1.tar.gz
Size 13.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bb811aac06614d7aee263b7f2d93353f9fb3bfcc8c79772bc8141eb6bcfdd0ab
BLAKE2b-256 checksum
How to use checksums
8ccae30107b3d3a4e7a796c0951b884cf383033ab00cf88d6da2c5b099399a66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 7, 2025.

Transparency log

Release files / strings_to_positions-1.1.1-py3-none-any.whl

Download URL strings_to_positions-1.1.1-py3-none-any.whl
Size 4.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a42444cb85c21e3e1da108fa660a3f85462e5915396beca75c83626674343fe0
BLAKE2b-256 checksum
How to use checksums
27c12e6f801117a6c807cc6674a462d4a92cfc9b3c49ac8976a1396650fb4cb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 7, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page