如何只得到随机字母而不是符号

How to only get random letters and not symbols

我正在尝试制作一个无限试用的小 Hangman 程序。我想我已经完成了程序的构建,但一个问题是文本包含符号(例如句点 (.))。我尝试了多种方法只从给定的文件中取出字母,但这没有用..任何人都可以帮助我吗??

我的代码

fr = input("What file would you like to open: ")
f = open(fr, 'r')
text = f.read()
x = 0
textsplit = text.split()
guess_list = ''



import random
rand_letter = random.choice(textsplit)

for i in range(len(rand_letter)):
    print ('*', end = '')
print ()
while x == 0:
    guess = input("Guess a character: ")
    guess_list += guess
    if guess not in rand_letter:
        print("You're wrong bro")
    else:
        for char in rand_letter:
            if char in guess_list:
                print (char, end = ''),

            if char not in guess_list:
                print('*', end = ''),
    if guess_list == rand_letter:
        break

我要解决的问题(例子):

。在“父亲”中。实际上很难猜,所以我想去掉符号,只留下字母。

任何 help/advice/comment 将不胜感激!! :)

这是使用正则表达式的一种方法:

import re

text = "father."
text = re.sub(r"[^\w\s]", "", text)

"""
text: 'father'
"""

(这是如果你也想包括数字和空格) 如果您不需要空格,请删除 \s,如果您不需要数字,您可以删除 \w 并将其替换为 a-zA-Z

这是一个不使用正则表达式的例子

text = "father."
allowed = set("abcdefghijklmnopqrstuvwxyz ")

text = ''.join(c for c in text if c in allowed)

"""
text: 'father'
"""

在这里,您可以将任何允许的字符添加到 allowed 变量中。我已将其设为一组以加快计算速度。

您可以尝试使用此代码过滤您尝试猜测的字符串,其中 select 只有字符串中的字母 :

YOUR_STRING = ''.join(x for x in YOUR_STRING if x.isalpha())

此处 YOUR_STRING 为 rand_letter。