问题描述
在编写“ who”命令并将其重定向到users.txt文件后,我需要将文本的每一行分解为三个变量:who,where和when_and_IP。并打印输出。
library(dplyr)
df %>%
mutate(col1 = pmin(seq01,seq02),col2 = pmax(seq01,.before = 1) %>%
distinct(col1,col2,similarity)
# col1 col2 similarity
# <chr> <chr> <dbl>
#1 a b 100
#2 c d 99
我不确定我的代码有什么问题吗?
解决方法
您的代码有几个问题:
- 您正在通过传递
"w"
参数以写入模式打开文件,这实际上将擦除文件的内容。使用"r"
进行阅读,或者完全不指定模式,因为"r"
是默认值。 -
file
没有split
方法,您需要对其进行迭代以对行进行操作,然后可能将它们拆分。 -
split
的参数应该是您要分割的分隔符。如果您不传递任何参数,那么它将被任何空白字符(空格,制表符,换行符)分隔,这可能就是您想要的。 -
startswith
不是file
的方法,它是字符串的方法,它返回一个布尔值(True
或False
),以指示字符串是否以子字符串。因此,在这里使用它似乎没有任何意义。
以下是一些可行的示例,可以帮助您实现目标:
>>> users = open("users.txt").readlines()
>>> users = [line.rstrip().split(maxsplit=2) for line in users]
>>> users
[['user1','tty7','2020-10-31 00:12 (:0)'],['user2','tty2','2020-11-07 14:43']]
>>> for who,where,when in users:
... print(f"who={who},where={where},when={when}")
who=user1,where=tty7,when=2020-10-31 00:12 (:0)
who=user2,where=tty2,when=2020-11-07 14:43