我是python的新手并编写一个程序来计算行数.该文件如下所示:
0.86149806
1.8628227
-0.1380086
-1
0.99927421
-1.0007207
0.99927421
0.99926955
-1.0007258
Run Code Online (Sandbox Code Playgroud)
我的代码尝试如下:
counterPos = 0
counterNeg = 0
counterTot = 0
counterNeu = 0
with open('test.txt', 'r') as infile:
for line in infile:
counterTot += 1
for i in line:
if i > 0.3:
counterPos += 1
elif i < -0.3:
counterNeg += 1
else:
counterNeu += 1
Run Code Online (Sandbox Code Playgroud)
我试图让它计算低于-0.3的counterNeg所有行,所有高于0.3的行counterPos,以及所有具有介于0.29和-0.29之间的数字的行counterNeu.
它似乎不起作用,我知道我出错for i in line但不确定如何.
我有一个文本文件,每行包含推文,需要针对机器学习格式进行更改.我使用python和基本的unix文本操作(正则表达式)实现了很多我的字符串操作,并且我开始使用sed,grep和pythons .re函数....这个下一个问题然而对我来说是心灵冒犯,并且想知道是否任何人都可以帮助我.我尝试了一些谷歌搜索,但没有运气:(
我总是从伪代码开始,使我更容易,这就是我想要的......" 替换-token1-或-token2-或-token3-或-token4-与整数'1',替换所有其他单词/代币整数'0' "
让我说我需要成为'1'的单词/代币列表如下:
我的推文看起来像这样:
新程序/功能的输出将是:
注1:注意'酷'有'!' 在它背后,它也应该被包括在内,虽然我总是可以首先删除文件中的所有标点符号,以使其更容易
注2:所有推文都是小写的,我已经有了一个将所有行改为小写的函数
有没有人知道如何使用unix正则表达式(如sed,grep,awk)甚至如何在python中执行此操作?顺便说一句,这不是家庭作业,我正在研究情绪分析程序,我正在尝试一下.
感谢名单!:)
我有以下功能构建来排序行,然后每行,它将行内的内容分类为数值.
像这样的行:
67:1 45:1 67:1 89:1
31:1 89:5 45:1 23:1
Run Code Online (Sandbox Code Playgroud)
码:
with open("SVM/svm-pos-train.txt") as f, open("SVM/svm-pos-train2.txt", 'w') as out:
for line in f:
line = line.split()
line.sort(key = lambda x: int(x.split(':')[0]))
out.write(" ".join(line) + '\n')
Run Code Online (Sandbox Code Playgroud)
我如何编辑这个,以便从行中删除重复项,如下所示:
45:1 67:1 89:1
23:1 31:1 45:1 89:1
Run Code Online (Sandbox Code Playgroud)
我一直在搜索和试用/(很多)错误,但没有运气.
我正在编写一个python函数来执行以下操作,从每行添加数字,这样我就可以找到平均值.这是我的文件的样子:
-2.7858521
-2.8549764
-2.8881847
2.897689
1.6789098
-0.07865
1.23589
2.532461
0.067825
-3.0373958
Run Code Online (Sandbox Code Playgroud)
基本上我已经编写了一个程序,为每一行执行for循环,递增行的计数器并将每一行设置为浮点值.
counterTot = 0
with open('predictions2.txt', 'r') as infile:
for line in infile:
counterTot += 1
i = float(line.strip())
Run Code Online (Sandbox Code Playgroud)
现在是我被困的部分
totalSum =
mean = totalSum / counterTot
print(mean)
Run Code Online (Sandbox Code Playgroud)
正如你可以告诉我新的python,但我发现它非常方便文本分析工作,所以我进入它.
额外功能
我还在研究一个额外的功能.但应该是如上所述的单独功能.
counterTot = 0
with open('predictions2.txt', 'r') as infile:
for line in infile:
counterTot += 1
i = float(line.strip())
if i > 3:
i = 3
elif i < -3:
i = -3
Run Code Online (Sandbox Code Playgroud)
从代码中可以看出,函数决定一个数字是否大于3,如果是,则将其设为3.如果number小于-3,则使其为-3.但我试图将其输出到一个新文件,以便它保持其结构.对于这两种情况,我想保留小数位.我总是可以自己舍入输出数字,我只需要完整的数字.
本周早些时候,我发布了一个关于如何将特定单词更改为文件中的数字的问题.作为我的情绪分析工作的一部分.不幸的是,这对我来说不是正确的方法,我解释了我的数据错误.所以我会用正确的方法提出这个问题.
我有一个包含令牌的特定单词列表,例如,我将使用4个单词,尽管它将是40个单词.我需要使用列表将推文转换为0 1 1 0类型格式.
我的列表如下(每行1个字的文本文件):
我的推文:
输出应该是:
基本上每个数字对应于列表中找到令牌的位置.所以在TWEET1中,第一个'1'对应于列表中的第一个位置(这是笑脸),第二个数字'0'对应于列表中的第二个位置(不快乐的笑脸),并且因为它未在推特,它变成'0'.第三个数字,即'1',对应于列表中的第三个位置(快乐),因为它在推文中找到...它变为'1'.....我希望我解释它好.
我使用python编写了很多我的脚本/程序来操作我文件中的文本,所以我正在寻找一个python程序来为我做这个.我是python的新手,所以我希望有人可以帮我写一个脚本来做到这一点.
我希望我已经解释得很好,我花了一些时间来掌握这个概念.
thanx :)
更多信息:
0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0
编辑部分
下面给出的惊人答案不符合标准.它非常优雅地用数字替换单词.但不是我需要的不幸......
进一步的解释(它帮助我更好地理解它的方式).....
考虑一下:
TWEET1:"今天将是快乐的一天:)"
所以我在文件(数千行)input.txt中有以下输出
2956:1 1076:1 4118:1 1378:1 2561:1
1039:1 1662:1
1948:1 894:1 1797:1 1662:1
Run Code Online (Sandbox Code Playgroud)
问题是我需要让每一行按升序排序
期望的输出:output.txt
1076:1 1378:1 2561:1 2956:1 4118:1
1039:1 1662:1
894:1 1662:1 1797:1 1948:1
Run Code Online (Sandbox Code Playgroud)
这对于实现它是一个真正的挑战,我正在寻找一个python函数来为我做这件事.这些行必须保持原样,但每行必须按升序排序(就像输出一样).
关于如何做到这一点的任何想法?
作为回答的另一个问题的后续跟进,我现在有以下格式的数据:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 …Run Code Online (Sandbox Code Playgroud) 我有一个大约5000个独特单词/代币的列表,每个单词(一个笑脸算作一个单词)是每行.我试图生成一些适用于SVM for python的东西.
想象一下,示例列表只有几个字
happy
sad
is
:(
i
the
day
am
today
:)
Run Code Online (Sandbox Code Playgroud)
我的字符串是:
tweets =['i am happy today :)','is today the sad day :(']
Run Code Online (Sandbox Code Playgroud)
然后每条推文的输出是:
5:1 8:1 1:1 9:1 10:1
3:1 9:1 6:1 2:1 4:1
Run Code Online (Sandbox Code Playgroud)
请注意这种格式:这意味着冒号前的第一个数字应该使用列表中的行号/位置来引用该单词.例如':)'是列表中的第十个单词(文本文件,每行1个标记).
我正在考虑创建一个读取文本文件的函数,并将每行(每个单词/标记)放入一个列表或字典中,以便我可以从每条推文读取一个单词并将其转换为基于的数字它在列表中的位置.
有没有人知道如何在python中做到这一点?然后我在想这样的事情:
for i in tweets:
<translate-words-into-list-position>
Run Code Online (Sandbox Code Playgroud) 嘿我正在尝试更改我的Python列表中的元素,而我却无法让它工作.
content2 = [-0.112272999846, -0.0172778364044, 0,
0.0987861891257, 0.143225416783, 0.0616318333661,
0.99985834, 0.362754457762, 0.103690909138,
0.0767353098528, 0.0605534405723, 0.0,
-0.105599793882, -0.0193182826135, 0.040838960163,]
for i in range((content2)-1):
if content2[i] == 0.0:
content2[i] = None
print content2
Run Code Online (Sandbox Code Playgroud)
它需要产生:
content2 = [-0.112272999846, -0.0172778364044, None,
0.0987861891257, 0.143225416783, 0.0616318333661,
0.99985834, 0.362754457762, 0.103690909138,
0.0767353098528, 0.0605534405723, None,
-0.105599793882, -0.0193182826135, 0.040838960163,]
Run Code Online (Sandbox Code Playgroud)
我也尝试了其他各种方法.有人有个主意吗?