Как извлечь строку между 2 символами в одной строке на Python - PullRequest
0 голосов
/ 07 марта 2019

Задача

У меня есть текстовый файл с буквенно-цифровыми именами файлов:

\abc1.txt.  \abc2.txt     \abc3.txt     \abcde3.txt
\Zxcv1.txt        \mnbd2.txt     \dhtdv.txt

Мне нужно извлечь из файла все расширения .txt, которые будут находиться в одной строке, а также в другой строке файла в python.

Желаемый вывод:

abc1.txt
abc2.txt
abc3.txt
abcde3.txt
Zxcv1.txt
mnbd2.txt
dhtdv.txt

Я ценю вашу помощь.

Ответы [ 3 ]

0 голосов
/ 07 марта 2019

Вы можете использовать re.findall с шаблоном, который совпадает с двумя словами, разделенными .:

import re
print('\n'.join(re.findall(r'\w+\.\w+', s)))

Учитывая ваш входной текст в переменной s, это выдает:

bc1.txt
bc2.txt
bc3.txt
bcde3.txt
Zxcv1.txt
mnbd2.txt
dhtdv.txt
0 голосов
/ 07 марта 2019

На вашем месте я бы использовал регулярные выражения (регулярное выражение).

import re

# Open the file with the mode r, which means read the file
with open("text_file.txt", "r") as f:
    # Actually read the content of the file
    file_content = f.read()

# Find everything which matches the given regex code
# This returns a list of the matches
files = re.findall(r"\\(.*?.txt)", file_content)

# Iterate through each item in the list
for file in files:
    # Print the item
    print(file)

Вот объяснение регулярного выражения, которое я использовал: https://regex101.com/r/DAPlqM/1

0 голосов
/ 07 марта 2019

Попробуйте это:

string = r"\abc1.txt. \abc2.txt \abc3.txt \abcde3.txt \Zxcv1.txt \mnbd2.txt \dhtdv.txt"
list = string.split("\\")
print(list)
formatted = "\n".join(list)
print(formatted)

Результаты:

['', 'abc1.txt. ', 'abc2.txt ', 'abc3.txt ', 'abcde3.txt ', 'Zxcv1.txt ', 'mnbd2.txt ', 'dhtdv.txt']

abc1.txt. 
abc2.txt 
abc3.txt 
abcde3.txt 
Zxcv1.txt 
mnbd2.txt 
dhtdv.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...