【问题标题】:How to only get random letters and not symbols如何只获取随机字母而不是符号
【发布时间】:2020-07-27 13:34:29
【问题描述】:

我正在尝试制作一个可以无限试用的小型 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

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

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

任何帮助/建议/评论将不胜感激! :)

【问题讨论】:

    标签: python function alphabetical


    【解决方案1】:

    您可以尝试使用此代码过滤您尝试猜测的字符串,该代码仅选择字符串中的字母:

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

    这里 YOUR_STRING 是 rand_letter。

    【讨论】:

    • 感谢您的帮助!这段代码运行良好,但两个答案都很好,所以我只需要使用更快的那个。非常感谢你:)
    【解决方案2】:

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

    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 变量。我已经将它设置为更快的计算。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多