Java Python从文本文件存储和打印数据

Java Python从文本文件存储和打印数据,java,python,Java,Python,我正在尝试一个Python脚本,它从用户那里获取特定字母a、C、G、T的序列,并打印a、C、G和T的百分比 例如,如果用户键入 AGGTGACCCT 那么输出应该是 A:20 C:30 G:30 T:20 我对Java很有经验,但对Python还不熟悉。我不知道如何像在Java中那样使用扫描仪。我试着在参考库中搜索,但没有找到任何东西。是一个非常方便的工具,值得您在开始使用python时学习 from collections import Counter inp = input("Enter

我正在尝试一个Python脚本,它从用户那里获取特定字母a、C、G、T的序列,并打印a、C、G和T的百分比

例如,如果用户键入 AGGTGACCCT 那么输出应该是 A:20 C:30 G:30 T:20

我对Java很有经验,但对Python还不熟悉。我不知道如何像在Java中那样使用扫描仪。我试着在参考库中搜索,但没有找到任何东西。

是一个非常方便的工具,值得您在开始使用python时学习

from collections import Counter

inp = input("Enter letters") # input() if using python 3

l = len(inp.strip()) # get length of input string ,inp.strip() removes any whitespace, just use len(inp) if you want to include

c = Counter(inp)

for char in c:
    c[char] = c[char] * 100 / l  # don't need to cast as float for python 3
print (c)
Counter({'C': 30.0, 'G': 30.0, 'A': 20.0, 'T': 20.0})

有一个csv模块,它有一个可以将数据写入文件的

您可以直接从标准输入流sys.stdin中读取,如下所示:

$ cat read.py 
import sys

userin = sys.stdin.read()
print [c for c in userin]

$ python read.py 
HELLO
['H', 'E', 'L', 'L', 'O', '\n']
然后您可以通过管道将文本文件传输到stdin,如:

$ cat input.txt 
HELLO
$ python read.py < input.txt 
['H', 'E', 'L', 'L', 'O', '\n']

如果可以将序列保存在逗号分隔的csv文件中,则可以执行以下操作:

import pandas as pd

sequence = pd.read_csv(file_name)
As = 0
Cs = 0
Gs = 0
Ts = 0
total = len(sequence)

for letter in sequence:
    if letter == 'A':
        As += 1.0
    elif letter == 'C':
        Cs += 1.0
    elif letter == 'G':
        Gs += 1.0
    elif letter == 'T':
        Ts += 1.0

percent_A = As/total
percent_C = As/total
percent_T = As/total
percent_G = As/total
或:


这个一般结构也适用于TSV。

对于原始输入,要导入的模块是什么?@Muffinman,它是python 2的内置模块,您不需要导入。我没有使用python 2,这就是为什么我想知道的原因。我使用的是最新版本的3。我在旁边添加了一条说明,如果您使用的是python 3,请使用inputI。我在发布该评论时注意到了这一点,谢谢您的帮助。
import pandas as pd

sequence = pd.read_csv(file_name)
As = 0
Cs = 0
Gs = 0
Ts = 0
total = len(sequence)

for letter in sequence:
    if letter == 'A':
        As += 1.0
    elif letter == 'C':
        Cs += 1.0
    elif letter == 'G':
        Gs += 1.0
    elif letter == 'T':
        Ts += 1.0

percent_A = As/total
percent_C = As/total
percent_T = As/total
percent_G = As/total
import pandas as pd

sequence_list = []
sequence = pd.read_csv(file_name)
for letter in sequence:
    sequence_list.append(letter)

As = sequence_list.count('A')
Cs = sequence_list.count('C')
Gs = sequence_list.count('G')
Ts = sequence_list.count('T')

total = len(sequence_list)

percent_A = As/total
percent_C = As/total
percent_T = As/total
percent_G = As/total