Hướng dẫn how do you get the position of a string in a text file in python? - làm thế nào để bạn có được vị trí của một chuỗi trong tệp văn bản trong python?

Ví dụ, tôi có tệp và từ "kiểm tra". Tệp là một phần nhị phân nhưng có chuỗi "kiểm tra". Làm thế nào để tìm vị trí của từ [chỉ mục] trong tệp không tải vào bộ nhớ tệp này?

DOT NET

4.86312 Huy hiệu vàng52 Huy hiệu bạc97 Huy hiệu Đồng12 gold badges52 silver badges97 bronze badges

Hỏi ngày 8 tháng 8 năm 2011 lúc 10:43Aug 8, 2011 at 10:43

3

Bạn không thể tìm thấy vị trí của một văn bản trong một tệp trừ khi bạn mở tệp. Nó giống như yêu cầu ai đó đọc một tờ báo mà không mở mắt.

Để trả lời phần đầu tiên của câu hỏi của bạn, nó tương đối đơn giản.

with open['Path/to/file', 'r'] as f:
    content = f.read[]
    print content.index['test']

Đã trả lời ngày 28 tháng 9 năm 2013 lúc 7:44Sep 28, 2013 at 7:44

Pankaj Parasharpankaj ParasharPankaj Parashar

9.3445 huy hiệu vàng34 Huy hiệu bạc47 Huy hiệu đồng5 gold badges34 silver badges47 bronze badges

Bạn có thể sử dụng các tệp ánh xạ bộ nhớ và biểu thức thông thường.

Các đối tượng tệp được ánh xạ bộ nhớ hoạt động giống như cả hai chuỗi và thích các đối tượng tệp. Tuy nhiên, không giống như các đối tượng chuỗi bình thường, chúng là có thể thay đổi. Bạn có thể sử dụng các đối tượng MMAP ở hầu hết các nơi mà chuỗi được mong đợi; Ví dụ: bạn có thể sử dụng mô-đun RE để tìm kiếm thông qua tệp ánh xạ bộ nhớ. Vì chúng có thể thay đổi, bạn có thể thay đổi một ký tự duy nhất bằng cách thực hiện obj [index] = 'a' hoặc thay đổi một chuỗi con bằng cách gán cho một lát: obj [i1: i2] = '...'. Bạn cũng có thể đọc và ghi dữ liệu bắt đầu ở vị trí tệp hiện tại và tìm kiếm [] thông qua tệp đến các vị trí khác nhau.for example, you can use the re module to search through a memory-mapped file. Since they’re mutable, you can change a single character by doing obj[index] = 'a', or change a substring by assigning to a slice: obj[i1:i2] = '...'. You can also read and write data starting at the current file position, and seek[] through the file to different positions.

Thí dụ

import re
import mmap

f = open['path/filename', 'r+b']
mf = mmap.mmap[f.fileno[], 0]
mf.seek[0] # reset file cursor
m = re.search['pattern', mf]
print m.start[], m.end[]
mf.close[]
f.close[]

Đã trả lời ngày 8 tháng 8 năm 2011 lúc 11:10Aug 8, 2011 at 11:10

Nick Dandoulakisnick DandoulakisNick Dandoulakis

41.9K15 Huy hiệu vàng102 Huy hiệu bạc136 Huy hiệu đồng15 gold badges102 silver badges136 bronze badges

0

Thử cái này:

with open[file_dmp_path, 'rb'] as file:
fsize = bsize = os.path.getsize[file_dmp_path]
word_len = len[SEARCH_WORD]
while True:
    p = file.read[bsize].find[SEARCH_WORD]
    if p > -1:
        pos_dec = file.tell[] - [bsize - p]
        file.seek[pos_dec + word_len]
        bsize = fsize - file.tell[]
    if file.tell[] < fsize:
        seek = file.tell[] - word_len + 1
        file.seek[seek]
    else:
        break

Đã trả lời ngày 28 tháng 9 năm 2013 lúc 6:06Sep 28, 2013 at 6:06

Trong hướng dẫn này, chúng tôi sẽ tìm hiểu về phương thức Python Index [] với sự trợ giúp của các ví dụ.

Phương thức index[] trả về chỉ mục của một chuỗi con bên trong chuỗi [nếu tìm thấy]. Nếu không tìm thấy chất nền, nó sẽ tăng một ngoại lệ.

Thí dụ

text = 'Python is fun'

# find the index of is result = text.index['is']

print[result] # Output: 7

chỉ mục [] cú pháp

Đó là cú pháp là:

str.index[sub[, start[, end]] ]

chỉ mục [] tham số

Phương thức index[] lấy ba tham số:

  • Sub - Subring sẽ được tìm kiếm trong chuỗi str. - substring to be searched in the string str.
  • Bắt đầu và kết thúc [Tùy chọn] - Subring được tìm kiếm trong STR [Bắt đầu: End] and end[optional] - substring is searched within str[start:end]

index [] giá trị trả về

  • Nếu chuỗi con tồn tại bên trong chuỗi, nó sẽ trả về chỉ số thấp nhất trong chuỗi nơi tìm thấy chuỗi con.
  • Nếu chất nền không tồn tại bên trong chuỗi, nó sẽ tăng ngoại lệ giá trị.ValueError exception.

Phương thức index[] tương tự như phương thức find [] cho chuỗi.

Sự khác biệt duy nhất là phương thức tìm [] trả về -1 nếu không tìm thấy chuỗi con, trong khi index[] ném một ngoại lệ.-1 if the substring is not found, whereas index[] throws an exception.

Ví dụ 1: Chỉ mục [] chỉ với đối số phụ

sentence = 'Python programming is fun.'

result = sentence.index['is fun']

print["Substring 'is fun':", result]

result = sentence.index['Java']

print["Substring 'Java':", result]

Đầu ra

Substring 'is fun': 19

Traceback [most recent call last]:
  File "", line 6, in 
    result = sentence.index['Java']
ValueError: substring not found

Lưu ý: Chỉ mục trong Python bắt đầu từ 0 chứ không phải 1. Vì vậy, sự xuất hiện là 19 và không 20. Index in Python starts from 0 and not 1. So the occurrence is 19 and not 20.

Ví dụ 2: index [] với các đối số bắt đầu và kết thúc

sentence = 'Python programming is fun.'

# Substring is searched in 'gramming is fun.'

print[sentence.index['ing', 10]]

# Substring is searched in 'gramming is ' print[sentence.index['g is', 10, -4]] # Substring is searched in 'programming'

print[sentence.index['fun', 7, 18]]

Đầu ra

15
17
Traceback [most recent call last]:
  File "", line 10, in 
    print[quote.index['fun', 7, 18]]
ValueError: substring not found

Bài Viết Liên Quan

Chủ Đề