Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python 2将文本中的数值指定给字符串中的字符_Python_Nlp - Fatal编程技术网

使用python 2将文本中的数值指定给字符串中的字符

使用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

如果我有一个文本文件,其中包含所有英文字母,并带有一些相应的值,如下所示:

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()

            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