Допустим, у меня есть текстовый файл:
As a manager, he told FIFA TV he communicates his messages in a measured way. “I’m not one of the lads,” Southgate explained.
Есть ли способ получить предложение внутри цитаты (") и сохранить это предложение как переменную? Я знаю, что должен использовать метод сканирования, но я новичок в языке Python и не знаю, как это сделать. Может ли кто-нибудь дать мне пример того, как хранить это?
Предложение внутри " содержит специальные символы, поэтому использование его в качестве имени переменной невозможно. Вам нужно будет добавить символы типа _, чтобы заполнить пробел, и ваша задача может быть выполнена. Также проверьте этот stackoverflow.com/questions/5036700/….
Я бы предпочел не использовать такие модули, как re, обсуждаемые в этой теме, просто мое мнение, но я думаю, что они усложняют работу.
Я сомневаюсь, что вы хотите использовать строку в " в качестве имени переменной (динамически создавая переменные) или просто хотите присвоить это другой переменной?
Я просто хочу получить строку внутри "и преобразовать ее другим методом @RishikeshAgrawani
Внутри строки, заключенной в ", может быть несколько подстрок или только 1?
только 1 предложение внутри "
Хорошо, спасибо за обновление. Текст “I’m not one of the lads,” на самом деле не находится внутри ", поскольку он содержит ”. Убедитесь, что это " или ”? Проверял в своем редакторе. Если это ”, то нам нужно добавить поддержку текстов utf-8, если это ", тогда все в порядке.
если он использует «как? и если он использует» как? почему






Вы можете сделать что-то вроде этого:
file = open("filename.txt","r") # Opens the file
sentence = file.readline().split() # ['A','s',' ','a',' ','m'...]
startQuote = sentence.index('"') # Finds first occurence
endQuote = sentence[startQuote::].index("'") # Finds first occurrence after first quote
stringSentence = ''.join(sentence[startQuote:endQuote:]) # Creates string with splicing
Если вы хотите, чтобы код учитывал «умные кавычки», вы можете упростить его до следующего:
file = open("filename.txt","r") # Opens the file
sentence = file.readline().split() # ['A','s',' ','a',' ','m'...]
startQuote = sentence.index(“) # Finds first occurence
endQuote = sentence.index(”) # Finds first occurrence of end quote
stringSentence = ''.join(sentence[startQuote:endQuote:]) # Creates string with splicing
Возможно, вам придется исправить некоторые ошибки в этом коде, так как я его не тестировал.
Надеюсь, это дает вам представление о том, что вам нужно делать.
это дает мне ошибку. указанная ошибка startQuote = предложение.index ("\" ") # Находит первое вхождение ValueError: '"' отсутствует в списке
Это может быть связано с тем, что цитаты, которые вы использовали в примере, не были кавычками. Это были «умные цитаты», если вы посмотрите внимательно, вы поймете, что я имею в виду. Они немного наклонены.
Если вы можете быть уверены, что в строках, которые вы пытаетесь разобрать, всегда есть две двойные кавычки, вы можете просто использовать str.split('"')[0] для извлечения того, что между ними.
>>> s = '''As a manager, he told FIFA TV he communicates his messages in a measured way. "I’m not one of the lads," Southgate explained.'''
>>> s.split('"')[1]
'I’m not one of the lads,'
Редактировать: Теперь я вижу, что ваша входная строка фактически использует наклонные двойные кавычки, “ и ”, а не стандартную двойную кавычку, ", и в этом случае я предлагаю вам вместо этого использовать следующее:
s = '''As a manager, he told FIFA TV he communicates his messages in a measured way. “I’m not one of the lads,” Southgate explained.'''
print(s[s.find('“') + 1:s.find('”')])
Это выводит:
I’m not one of the lads,
это просто разбиение предложения на слова. я имею в виду, чтобы предложение было внутри "
Пожалуйста, присмотритесь. Это правильно получает предложение между кавычками: I’m not one of the lads,. Я просто отредактировал свой ответ, чтобы его было легче читать.
не работает, даже когда я вставляю код ur. ошибка говорит IndexError: индекс списка вне допустимого диапазона
Теперь я понимаю, что это связано с тем, что ваша строка ввода фактически использует наклонные двойные кавычки, “ и ”, а не стандартную двойную кавычку, ".
они разные?
Да это совершенно разные персонажи. Я обновил свой ответ новым решением для учета используемых вами специальных двойных кавычек. Пожалуйста, проверьте это.
это работает. Спасибо друг. теперь что это за +1: s.find ('”')
Пожалуйста. s.find('“') возвращает индекс первого “ в строке, и, добавляя к нему единицу, мы получаем начальный индекс искомого предложения до конечного индекса, который находится с s.find('”').
Предположим, у вас есть строка текста в файле с именем предложение.txt.
sentence.txt
As a manager, he told FIFA TV he communicates his messages in a measured way. "I'm not one of the lads," Southgate explained.
Теперь вы можете попробовать приведенный ниже код, чтобы прочитать строку выше и извлечь подстроку, заключенную в " (двойные кавычки).
# -*- coding: utf-8 -*-
with open('sentence.txt', encoding='utf-8') as f:
sentence = f.read().strip();
words = sentence.split('\"');
if len(words) == 3:
string_in_double_quote = words[1];
print string_in_double_quote # I'm not one of the lads,
else:
print 'WARNING: String in text file does not have 2 double quotes, make sure to have it'
это работает, но вывод ПРЕДУПРЕЖДЕНИЕ, хотя я копирую и вставляю текст и код
Вставь мне свою строку, я проверю и обновлю. Позвольте мне проверить, в чем проблема.
Это то, что у меня в Windows CMD, e:\Users\Rishikesh\Python3\Practice\DoubleQuoteStringSeparation>python main.py I'm not one of the lads,.
чувак, я просто вставил текст выше. Я использую Py 2.7
Фактически вы скопировали старый код (я забыл удалить [1]). Теперь попробуйте текущий код.
Пожалуйста, взгляните на «Как извлечь строку между двойными кавычками»