string.punctuation удаление значения - PullRequest
0 голосов
/ 05 мая 2020

Итак, я пишу код, который подсчитывает количество слов, которые #ed, и если слово не #ed, оно игнорирует его.

Когда я запускаю код:

import string
all = []
count = {}
word = []
line = input("Tweet: ").lower().strip(string.punctuation)
while line != '':
  word.extend(line.split())
  line = input("Tweet: ").lower().strip(string.punctuation)
for w in word:
  if w.startswith('#'):
    count[w] = count.get(w, 0) + 1
for word in sorted(count):
  print(word, count[word])

и я ввожу # Python is # УДИВИТЕЛЬНЫЙ!

он выводит #awesome 1, но не # python 1

Мне он нужен для вывода всех #ed слов и посчитайте, сколько используется. Я думаю, что проблема вызвана строкой. Пунктуация.

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Вероятно, это сработает для вас

import string
all = []
count = {}
word = []
line = input("Tweet: ").lower().rstrip(string.punctuation)
while line != '.':
  word.extend(line.split())
  line = input("Tweet: ").lower().rstrip(string.punctuation)
for w in word:
  if w.startswith('#'):
    count[w] = count.get(w, 0) + 1
for word in sorted(count):
  print(word, count[word])

или

import string
all = []
count = {}
word = []
line = input("Tweet: ").lower()
while line != '.':
  word.extend(line.split())
  line = input("Tweet: ").lower()
for w in word:
  if w.startswith('#'):
    w = w.rstrip(string.punctuation)
    count[w] = count.get(w, 0) + 1
for word in sorted(count):
  print(word, count[word])
0 голосов
/ 05 мая 2020

Вы частично правы!

.strip(string.punctuation)

- виновник.

Согласно Python docs , # является частью строки. Пунктуация- set.

Также из в Python docs , в strip -функции:

string.strip (s [, chars])

Возвращает копию строки с удаленными начальными и конечными символами. Если символы не указаны или отсутствуют, пробельные символы удаляются. Если задано, а не None, символы должны быть строкой; символы в строке будут удалены с обоих концов строки, для которой вызывается этот метод.

Таким образом, вы удаляете ведущий (например, первый) # и строку, которая сохраняется в вашем переменная line равна "python is #awesome". Ваш while-l oop также никогда не выйдет, как ".".strip(string.punctuation) == "". Кажется, вам совсем не нужны методы .strip. Если предполагалось удалить последний символ, только если это пунктуация, используйте "your string".rstrip(string.punctuation) вместо

...