遍历单词列表,检查是否有以Python中给定字符串开头的单词
我最近开始学习Python,到目前为止,一切似乎都相当直观 我有一个文本文件,上面有几行数据。我遍历每一行,将其拆分为单词,现在我想遍历给定行上的每个单词,检查它是否以给定字符串开头,如果是,则将单词更改为其他单词 到目前为止,我已经:遍历单词列表,检查是否有以Python中给定字符串开头的单词,python,string,list,loops,Python,String,List,Loops,我最近开始学习Python,到目前为止,一切似乎都相当直观 我有一个文本文件,上面有几行数据。我遍历每一行,将其拆分为单词,现在我想遍历给定行上的每个单词,检查它是否以给定字符串开头,如果是,则将单词更改为其他单词 到目前为止,我已经: with open('test_inputfile.txt','r') as f: for line in f: words = line.split('","') for word in words: if word.start
with open('test_inputfile.txt','r') as f:
for line in f:
words = line.split('","')
for word in words:
if word.startswith('spam'):
# change given word
但这不起作用,因为我似乎无法访问word
的.startswith()
函数
我相信这一定很容易做到,因为到目前为止,其他一切都非常简单
谢谢。你可以试试这个:
f = open('test_inputfile.txt').readlines()
f = [i.strip('\n').split(',') for i in f]
for line in f:
for word in line:
if word.startswith('spam'):
现在,f存储一个列表,其中包含每行中的所有单词 如果您使用的是CSV数据,这可能会很有用。如果是这种情况,请将拆分更改为
line.split(',')
。否则,请参见下文
使用startswith
功能时,实际上不需要拆分行,因为您只关心行的开头。有关startswith
功能的更多信息,请参阅
打开('test_inputfile.txt','r')作为f的:
对于f中的行:
如果行.startswith('spam',0,4):
#采取行动
这可以有效地检查单词“spam”是否位于0到4的位置
祝你一切顺利:)你可能忘了在每一行中去掉开头/结尾的双引号。但我强烈建议使用该模块处理csv数据:
import csv
with open('test_inputfile.txt','r') as f:
reader = csv.reader(f, delimiter=',', quotechar='"')
# both params are the default values anyway
for row in reader:
for word in row:
if word.startswith('spam'):
# do stuff
您有这样一个文件:
"toast","eggs","bacon"
"orangejuice","spamandtoast","bagels"
读取文件:
with open("test_inputfile.txt", "r") as fs:
for lines in fs:
line = lines.split(",")
for word in line:
word = word.replace('"','') # removes the quotes
if word.startswith("spam"):
print word
您还可以在开头创建一个空列表wordlist=[]
,并将每个单词添加到列表中
wordlist.append(word)
更好地使用模块。您可能有一个空的iterable,因为您应该在
,“
而不是”,“
@MosesKoledoye不是空的,但只有一个元素:整个行@MosesKoledoye文本文件在单词之间有逗号和双撇号。您可能有一行类似“spam”,“second”,“第三个”
在本例中使用,“
(引号和逗号)作为分隔符将在第一个、中间和最后一个元素之间产生不同的行为。如果将引号作为文本的一部分,只需使用逗号作为分隔符并查找”垃圾邮件
而不是spam
在你的startswith
方法中,你能发布输入文件的一部分吗?也许我不清楚,我想检查是否每个单词都以“spam”开头,而不是每行。谢谢你的帮助!谢谢你的回答,但是,我遇到了与我的原始代码相同的问题:我不能使用word的.startswith()函数。这与我的代码基本相同,但我不能使用“words.startswith()”。请发布一些输入文本。它看起来像:“toast”、“egs”、“bacon”、“orangejuice”、“spamandtoast”、“bagels”
(其中orangejuice
开始一个新行)我想找到spamandtoast
,然后,例如,将其更改为酸奶