import textract
import sys
import os
import re
import random

###################################
# Extracts text from a pdf file and
# selects one sentence, which it
# then prints.
#
# Created by Fredrik Omstedt.
###################################

# Extracts texts from pdf files. If given a directory, the
# program will return texts from all pdf files in that directory.
def extractTexts():
    file = sys.argv[1]
    texts = []
    if os.path.isdir(file):
        for f in os.listdir(file):
            if re.match(r'^.*\.pdf$', f):
                texts.append(textract.process(file + "/" + f))
    else:
        texts.append(textract.process(file))
    return texts

# Chooses one sentence randomly from each of the given texts.
def selectSentences(texts):
    chosen_sentences = []
    for text in texts:
        sentence_structure = re.compile(r'([A-Z][^\.!?]*[\.!?])', re.M)
        sentences = sentence_structure.findall(text)
        chosen_sentences.append(
            sentences[random.randint(0, len(sentences)-1)].replace("\n", " ")
        )
    return chosen_sentences

def main():
    texts = extractTexts()
    sentences = selectSentences(texts)
    for sentence in sentences:
        print(sentence)
        print("\n")

if __name__ == '__main__':
    main()

import textract
import sys
import os
import re
import random

###################################
# Extracts text from a pdf file and
# selects one sentence, which it
# then prints.
#
# Created by Fredrik Omstedt.
###################################

# Extracts texts from pdf files. If given a directory, the
# program will return texts from all pdf files in that directory.
def extractTexts():
    file = sys.argv[1]
    texts = []
    if os.path.isdir(file):
        for f in os.listdir(file):
            if re.match(r'^.*\.pdf$', f):
                texts.append(textract.process(file + "/" + f))
    else:
        texts.append(textract.process(file))
    return texts

# Chooses one sentence randomly from each of the given texts.
def selectSentences(texts):
    chosen_sentences = []
    for text in texts:
        sentence_structure = re.compile(r'([A-Z\xc4\xc5\xd6][^\.!?]*[\.!?])', re.M)
        sentences = sentence_structure.findall(text)
        chosen_sentences.append(
            sentences[random.randint(0, len(sentences)-1)].replace("\n", " ")
        )
    return chosen_sentences

def main():
    texts = extractTexts()
    sentences = selectSentences(texts)
    for sentence in sentences:
        print(sentence)
        print("\n")

if __name__ == '__main__':
    main()

Update regex to match sentences starting with ÅÄÖ
Update regex to match sentences starting with ÅÄÖ

  import textract
  import sys
  import os
  import re
  import random
  
  ###################################
  # Extracts text from a pdf file and
  # selects one sentence, which it
  # then prints.
  #
  # Created by Fredrik Omstedt.
  ###################################
  
  # Extracts texts from pdf files. If given a directory, the
  # program will return texts from all pdf files in that directory.
  def extractTexts():
      file = sys.argv[1]
      texts = []
      if os.path.isdir(file):
          for f in os.listdir(file):
              if re.match(r'^.*\.pdf$', f):
                  texts.append(textract.process(file + "/" + f))
      else:
          texts.append(textract.process(file))
      return texts
  
  # Chooses one sentence randomly from each of the given texts.
  def selectSentences(texts):
      chosen_sentences = []
      for text in texts:
-         sentence_structure = re.compile(r'([A-Z][^\.!?]*[\.!?])', re.M)
+         sentence_structure = re.compile(r'([A-Z\xc4\xc5\xd6][^\.!?]*[\.!?])', re.M)
          sentences = sentence_structure.findall(text)
          chosen_sentences.append(
              sentences[random.randint(0, len(sentences)-1)].replace("\n", " ")
          )
      return chosen_sentences
  
  def main():
      texts = extractTexts()
      sentences = selectSentences(texts)
      for sentence in sentences:
          print(sentence)
          print("\n")
  
  if __name__ == '__main__':
      main()
  
Update regex to match sentences starting with ÅÄÖ
## Code Before:
import textract
import sys
import os
import re
import random

###################################
# Extracts text from a pdf file and
# selects one sentence, which it
# then prints.
#
# Created by Fredrik Omstedt.
###################################

# Extracts texts from pdf files. If given a directory, the
# program will return texts from all pdf files in that directory.
def extractTexts():
    file = sys.argv[1]
    texts = []
    if os.path.isdir(file):
        for f in os.listdir(file):
            if re.match(r'^.*\.pdf$', f):
                texts.append(textract.process(file + "/" + f))
    else:
        texts.append(textract.process(file))
    return texts

# Chooses one sentence randomly from each of the given texts.
def selectSentences(texts):
    chosen_sentences = []
    for text in texts:
        sentence_structure = re.compile(r'([A-Z][^\.!?]*[\.!?])', re.M)
        sentences = sentence_structure.findall(text)
        chosen_sentences.append(
            sentences[random.randint(0, len(sentences)-1)].replace("\n", " ")
        )
    return chosen_sentences

def main():
    texts = extractTexts()
    sentences = selectSentences(texts)
    for sentence in sentences:
        print(sentence)
        print("\n")

if __name__ == '__main__':
    main()

## Instruction:
Update regex to match sentences starting with ÅÄÖ
## Code After:
import textract
import sys
import os
import re
import random

###################################
# Extracts text from a pdf file and
# selects one sentence, which it
# then prints.
#
# Created by Fredrik Omstedt.
###################################

# Extracts texts from pdf files. If given a directory, the
# program will return texts from all pdf files in that directory.
def extractTexts():
    file = sys.argv[1]
    texts = []
    if os.path.isdir(file):
        for f in os.listdir(file):
            if re.match(r'^.*\.pdf$', f):
                texts.append(textract.process(file + "/" + f))
    else:
        texts.append(textract.process(file))
    return texts

# Chooses one sentence randomly from each of the given texts.
def selectSentences(texts):
    chosen_sentences = []
    for text in texts:
        sentence_structure = re.compile(r'([A-Z\xc4\xc5\xd6][^\.!?]*[\.!?])', re.M)
        sentences = sentence_structure.findall(text)
        chosen_sentences.append(
            sentences[random.randint(0, len(sentences)-1)].replace("\n", " ")
        )
    return chosen_sentences

def main():
    texts = extractTexts()
    sentences = selectSentences(texts)
    for sentence in sentences:
        print(sentence)
        print("\n")

if __name__ == '__main__':
    main()
