【发布时间】:2015-10-28 19:18:39
【问题描述】:
我想知道如何从文件中打印随机名称。基本上有3个文件,分别是姓、男名和女名。这些文件不仅仅是名称。他们也有数字。以下是文件的示例:
SMITH 1.006 2,501,922 1
JOHNSON 0.81 2,014,470 2
WILLIAMS 0.699 1,738,413 3
JONES 0.621 1,544,427 4
BROWN 0.621 1,544,427 5
DAVIS 0.48 1,193,760 6
MILLER 0.424 1,054,488 7
WILSON 0.339 843,093 8
MOORE 0.312 775,944 9
我希望输出打印出姓氏和名字(没有数字)这是我的代码到目前为止。它有效,但它打印出数字。
随机导入
def random_names(surname,male_names,female_names,integer):
names1 = open('surnames.txt', 'r')
names2 = open('malenames.txt', 'r')
names3 = open('femalenames.txt', 'r')
read1=names1.read().split()
read2=names2.read().split()
read3=names3.read().split()
gender_options = ('male', 'female')
count = 0
while count<integer:
gender_pick=random.choice(gender_options)
if gender_pick == 'male':
first_name=random.choice(read2)
elif gender_pick == 'female':
first_name=random.choice(read3)
last_name=random.choice(read1)
print (first_name,last_name)
count = count+1
random_names('surnames.txt', 'malenames.txt', 'femalenames.txt',10)
即使我将其修改为 read2[0] read1[0] read3[0],它也只是打印出字母。
J M
S H
E T
R I
A I
M H
J S
A I
M I
Y S
【问题讨论】:
-
您对
read2[0]、read1[0]等有何修改? -
另外,在您的
txt文件中,所有列都由特定数量的空格分隔(或者是任意数量的空格)? -
names1.read().split()将读取整个文件,然后在所有空白处进行拆分,包括换行符、空格和制表符。你最终会得到类似['SMITH', '1.006', '2,501,922', '1', JOHNSON 0.81 ]。 -
@AnandSKumar 我更改了while循环中的部分。
-
@AnandSKumar 主要由制表符分隔。小数部分后面的部分用制表符和空格隔开。