[英]How to match exact words in Python?
我是 python 的新手。 我在多个文本文件中有一组字符串。 那里我将超过 100 个文件。
weather: cool.add.odd.inn
blab: name= hello.add.COPY_HI
blab: name= hello.add.ACCESS_HELLO
blab: name= hello.add.ADD_HI
blab: name= hello.add.WRITE_HI
blab: name= hello.add.WRITE
blab: name= hello.add.COPY
weather: warm.add.minus
blab: name= hello.add.COPY_HI
blab: name= hello.add.ACCESS_HELLO
blab: name= hello.add.ADD_HI
blab: name= hello.add.WRITE_HI
blab: name= hello.add.WRITE
blab: name= hello.add.COPY
我创建了一个模式匹配列表
total = ['WRITE_HI', 'COPY_HI', 'ADD_HI'] #there will more than 100 key words
我想要给定输入列表的完全匹配并写入 csv 文件。 看我的编码
state1='weather,state'
weather= os.listdir('./data/weather')
for warm in weather:
file= open('./data/weather' + warm, 'r')
ins=file.read()
state1+=warm.replace('.txt', '') + ','
for all_1 in total:
if all_1 in ins:
state1 += all_1 + '\n'
state1 += '","'
output 以 csv 格式给出,现在我的代码通过字符串比较得到部分 output。 这里它的匹配以及类似的单词(例如:我只想要'WRITE_HI'和'COPY_HI'根据我的列表但它也给出'WRITE'和'COPY'作为类似的字符串匹配我不想要那个.我只想要列表中的模式。我听说还有更多的模式匹配方法,如回归匹配等。请任何人帮助我解决这个问题。提前致谢
Output:
weather,state
cool.add.odd.inn,'WRITE_HI'
'WRITE'
'COPY_HI'
'COPY'
'ADD_HI'
warm.add.minus,'WRITE_HI'
'WRITE'
'COPY_HI'
'COPY'
'ADD_HI'
更新:找到以下结果
def word_check(ins, total):
total=total[:]
found=[]
for match in re.finditer('\w+', ins):
if words in total:
found.append(words)
total.remove(words)
return found
由于匹配项始终位于行尾,因此只需在搜索查询的项目中包含换行符。
total = ['WRITE_HI\n', 'COPY_HI\n', 'ADD_HI\n']
请注意,这意味着将state1 += all_1 + '\n'
更改为state1 += all_1
因为所需的换行符已经存在。
此外,通过连接内容、逗号等手动组装 CSV 文件不是一个好主意。 使用像csv
模块这样的库。
实际上使用正则表达式来匹配它们会更容易
import re
pattern1 = r"\w*\.WRITE\_HI"
pattern2 = r"\w*\.COPY\_HI"
pattern3 = r"\w*"\.ADD\_HI"
#then use re.search method to search and match the names
此解决方案将匹配并使用 if 和 elif 案例可以将它们分为不同的组,您可以进行处理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.