使用python 2将文本中的数值指定给字符串中的字符
如果我有一个文本文件,其中包含所有英文字母,并带有一些相应的值,如下所示: A 0.00733659550399 B 0.00454138879023 C 0.00279849519224 D 0.00312734304092 我想将这些数值分配给从另一个txt文件读取的每一行使用python 2将文本中的数值指定给字符串中的字符,python,nlp,Python,Nlp,如果我有一个文本文件,其中包含所有英文字母,并带有一些相应的值,如下所示: A 0.00733659550399 B 0.00454138879023 C 0.00279849519224 D 0.00312734304092 我想将这些数值分配给从另一个txt文件读取的每一行 L = open(os.path.join(dir, file), "r").read() line = L.rstrip() tokens = line.split
L = open(os.path.join(dir, file), "r").read()
line = L.rstrip()
tokens = line.split()
for word in tokens:
for char in word:
查找这就是你要找的吗 input.txt
AAB BBC ABC
A 123
B 456
C 789
keyvalue.txt
AAB BBC ABC
A 123
B 456
C 789
script.py
def您的函数(输入文件):
char_值={}
以open('keyvalue.txt','r')作为f:
对于f中的行:
字符值[row.split()[0]]=row.split()[1]
res=[]
打开(输入_文件)作为f:
对于f中的行:
对于第行中的单词。拆分():
对于word中的c:
#仅当密钥存在时才附加的小技巧
字符值和res.append中的c(字符值[c])
返回“*”。加入(res)
打印(您的函数(“input.txt”))
# >>> 123*123*456*456*456*789*123*456*789
这就是你要找的吗
input.txt
AAB BBC ABC
A 123
B 456
C 789
keyvalue.txt
AAB BBC ABC
A 123
B 456
C 789
script.py
def您的函数(输入文件):
char_值={}
以open('keyvalue.txt','r')作为f:
对于f中的行:
字符值[row.split()[0]]=row.split()[1]
res=[]
打开(输入_文件)作为f:
对于f中的行:
对于第行中的单词。拆分():
对于word中的c:
#仅当密钥存在时才附加的小技巧
字符值和res.append中的c(字符值[c])
返回“*”。加入(res)
打印(您的函数(“input.txt”))
# >>> 123*123*456*456*456*789*123*456*789
从第一个文件创建字典,如下所示:
with open('values.txt') as f:
values = {k:v for k,v in (line.split() for line in f)}
然后迭代数据文件的每个字符,并将其替换为相应的值:
with open('A.txt') as infile, open('output.txt', 'w') as outfile:
for line in infile:
for c in line.rstrip():
print(values.get(c.upper(), '0'), file=outfile)
此代码(假定Python 3或Python 2中的打印函数导入)将写入与输入字符对应的数值,每行一个。如果字符没有值,则输出0
(可以更改为您想要的任何值)。请注意,传入字符转换为大写,因为您的示例看起来可能只包含大写字母。如果小写字母有单独的值,则可以删除对upper()
的调用
如果希望值保持在同一行上,则可以更改print()
函数调用:
with open('A.txt') as infile, open('output.txt', 'w') as outfile:
for line in infile:
print(*(values.get(c.upper(), '0') for c in line.rstrip()), file=outfile)
现在,这些值将以空格分隔。从第一个文件创建一个字典,如下所示:
with open('values.txt') as f:
values = {k:v for k,v in (line.split() for line in f)}
然后迭代数据文件的每个字符,并将其替换为相应的值:
with open('A.txt') as infile, open('output.txt', 'w') as outfile:
for line in infile:
for c in line.rstrip():
print(values.get(c.upper(), '0'), file=outfile)
此代码(假定Python 3或Python 2中的打印函数导入)将写入与输入字符对应的数值,每行一个。如果字符没有值,则输出0
(可以更改为您想要的任何值)。请注意,传入字符转换为大写,因为您的示例看起来可能只包含大写字母。如果小写字母有单独的值,则可以删除对upper()
的调用
如果希望值保持在同一行上,则可以更改print()
函数调用:
with open('A.txt') as infile, open('output.txt', 'w') as outfile:
for line in infile:
print(*(values.get(c.upper(), '0') for c in line.rstrip()), file=outfile)
现在,这些值将以空格分隔。预期的输出是什么,您遇到的错误是什么?另外,请正确缩进你的代码。不要重复这个词。在单词级创建一个形式为
{a:0.27373,b:0.39838}
等的字典,然后使用此字典匹配其他文件。输入为“hello”例如:我们应该为给定文本文件中的每个字母“hello”指定一个数值,该文件包含一个字母和相应的值。输出应为0.04*0.033*0.098*0.08*0.050.04*0.033*0.098*0.08*0.05-然后是双“L”应该保持相同的值吗?我尝试的是为从txt文件a.txt读取的字符串中的每个字母分配数值,使用另一个txt文件value.txt,该文件包含所有英文字母,每个字母都有相应的值。我只是将value.txt中的字母值映射到A.txt中每行中每个单词的每个字母。预期的输出是什么?您遇到的错误是什么?另外,请正确缩进你的代码。不要重复这个词。在单词级创建一个形式为{a:0.27373,b:0.39838}
等的字典,然后使用此字典匹配其他文件。输入为“hello”例如:我们应该为给定文本文件中的每个字母“hello”指定一个数值,该文件包含一个字母和相应的值。输出应为0.04*0.033*0.098*0.08*0.050.04*0.033*0.098*0.08*0.05-然后是双“L”应该保持相同的值吗?我尝试的是为从txt文件a.txt读取的字符串中的每个字母分配数值,使用另一个txt文件value.txt,该文件包含所有英文字母,每个字母都有相应的值。我只是将value.txt中的字母值映射到A.txtI中每行每个单词的每个字母。我更新了我的答案以满足作者的需要:输入是一个文件,而不是一个单词我更新了我的答案以满足作者的需要:输入是一个文件,而不是一个word@BernardMeurer:谢谢!你在评论中称之为:)现在没有电脑,无法在我的手机上键入好的答案,所以我只对想法进行评论:p@BernardMeurer:谢谢!你在评论中称之为:)现在没有电脑,无法在我的手机上键入好的答案,所以我只是对想法进行评论:p