Iam versucht, das babynames Problem in der Google Python-Klasse zu lösen und führte das folgende Skript aus.zeigt TypeError: Sequenzelement 0: erwartete Zeichenfolge, int gefunden; beim Konvertieren von Liste in Text
def extract_names(filename):
year=0
f=open(filename,'rU')
contents=f.read()
match = re.search(r'(/w+/s/w+/s)(/d/d/d/d)',contents)
if match:
year=match.group()
names=[]
names.append(year)
names_rank={}
m = re.findall(r'<td>(/d+)</td><td>(/w+)</td><td>(/w+) </td>',contents)
for item in m:
(r,boyname,girlname)=item
if boyname not in names_rank:
names_rank[boyname]=r
if girlname not in names_rank:
names_rank[girlname]=r
sorted_names=sorted(names_rank.keys())
for name in sorted_names:
names.append(name+' '+names_rank[name])
return names
def main():
args = sys.argv[1:]
if not args:
print 'usage: [--summaryfile] file [file ...]'
sys.exit(1)
summary = False
if args[0] == '--summaryfile':
summary = True
del args[0]
for filename in args:
names = extract_names(filename)
t = '\n'.join(names)
if summary:
fileout = open(filename, 'w')
fileout.write(t + '\n')
fileout.close()
else:
print text
if __name__ == '__main__':
in Funktion main gibt es einen Fehler
File "babynames.py", line 78, in main
t = '\n'.join(names)
TypeError: sequence item 0: expected string, int found
hier Namen ist eine Liste und mein Ziel ist es durch die Verwendung
t = '\n'.join(names)#where t is the text
aber es Text aus der ganzen Liste zu machen zeigt Int, gefunden, was kann der Grund dafür sein.wie das Problem zu lösen?