如何只得到随机字母而不是符号
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。
我正在尝试制作一个无限试用的小 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。