gpt4 book ai didi

python - 从文件生成字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:53 24 4
gpt4 key购买 nike

这是 Project Euler Problem 22 解决方案的开始.我有一个他们的文本文件的示例版本,我试图从中一次生成一个名称。 This是指向字符串方法文档的链接。我为任务编写了以下代码:

def name_gen():
with open('C:/python/namessample.txt') as nameFile:
nameGenerator = (i.strip('"').split(sep='","') for i in nameFile)
for name in nameGenerator:
yield type(name), type(nameGenerator), type(nameFile), name

for i in name_gen():
print(i)

这是代码输出:

(<class 'list'>, <class 'generator'>, <class '_io.TextIOWrapper'>, ['DOUGLASS', 'CORDELL', 'OSWALDO', 'ELLSWORTH', 'VIRGILIO', 'TONEY', 'NATHANAEL', 'DEL', 'BENEDICT', 'MOSE', 'JOHNSON', 'ISREAL', 'GARRET', 'FAUSTO', 'ASA', 'ARLEN', 'ZACK', 'WARNER', 'MODESTO', 'FRANCESCO', 'MANUAL', 'GAYLORD', 'GASTON', 'FILIBERTO', 'DEANGELO', 'MICHALE', 'GRANVILLE', 'WES', 'MALIK', 'ZACKARY', 'TUAN', 'ELDRIDGE', 'CRISTOPHER', 'CORTEZ', 'ANTIONE', 'MALCOM', 'LONG', 'KOREY', 'JOSPEH', 'COLTON', 'WAYLON', 'VON', 'HOSEA', 'SHAD', 'SANTO', 'RUDOLF', 'ROLF', 'REY', 'RENALDO', 'MARCELLUS', 'LUCIUS', 'KRISTOFER', 'BOYCE', 'BENTON', 'HAYDEN', 'HARLAND', 'ARNOLDO', 'RUEBEN', 'LEANDRO', 'KRAIG', 'JERRELL', 'JEROMY', 'HOBERT', 'CEDRICK', 'ARLIE', 'WINFORD', 'WALLY', 'LUIGI', 'KENETH', 'JACINTO', 'GRAIG', 'FRANKLYN', 'EDMUNDO', 'SID', 'PORTER', 'LEIF', 'JERAMY', 'BUCK', 'WILLIAN', 'VINCENZO', 'SHON', 'LYNWOOD', 'JERE', 'HAI', 'ELDEN', 'DORSEY', 'DARELL', 'BRODERICK', 'ALONSO'])

nameFile 和 nameGenerator 的类型似乎是正确的,但 name 最好一次是一个字符串,而不是字符串列表。我猜 name 是一个列表的原因是因为 .split 返回一个列表,但是我想不出一种不同的方法来分隔文件中的名称。我还使用 .strip 删除了前导引号和尾随引号。

最佳答案

文件包含一行,所以真的没有必要遍历文件。只需循环拆分列表:

def name_gen():
with open('C:/python/namessample.txt') as nameFile:
for name in nameFile.read().split(','):
yield name.strip('"')

或者只返回整个列表;你已经把它读进了内存:

def name_gen():
with open('C:/python/namessample.txt') as nameFile:
return [name.strip('"') for name in nameFile.read().split(',')]

如果你确实有多行,每行包含多个名字,你可以嵌套循环:

def name_gen():
with open('C:/python/namessample.txt') as nameFile:
for line in nameFile:
for name in line.rstrip('\n').split(','):
yield name.strip('"')

关于python - 从文件生成字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15397936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com