Scanner Problem

Status
Nicht offen für weitere Antworten.

flashdog

Bekanntes Mitglied
Hallo,
Ich habe folgende Datei:
Code:
ORIGX1      1.000000  0.000000  0.000000        0.00000                         
ORIGX2      0.000000  1.000000  0.000000        0.00000                         
ORIGX3      0.000000  0.000000  1.000000        0.00000                         
SCALE1      0.006520  0.003760  0.000000        0.00000                         
SCALE2      0.000000  0.007530  0.000000        0.00000                         
SCALE3      0.000000  0.000000  0.012390        0.00000                         
ATOM      1  N   GLU A   2      54.812  39.404  32.654  1.00100.27           N  
ATOM      2  CA  GLU A   2      53.827  40.367  33.243  1.00100.89           C  
ATOM      3  C   GLU A   2      54.447  41.284  34.301  1.00100.89           C  
ATOM      4  O   GLU A   2      55.611  41.693  34.166  1.00100.89           O  
ATOM      5  CB  GLU A   2      52.547  39.680  33.729  1.00100.89           C  
ATOM      6  N   GLY A   3      53.662  41.640  35.325  1.00100.89           N

Ich möchte eine Zeile ausgeben die mit ATOM beginnt und CA beinhatet.
Code:
ATOM      2  CA  GLU A   2      53.827  40.367  33.243  1.00100.89           C

Ich habe folgendes Python Skript :
Code:
pdb = open("1D9Z.pdb", "r")
for line in pdb:
	if line[:4] == 'ATOM' and line[13:15] == "CA":
		print line

Wie würde dies in Java aussehen? Vielleicht ist es möglich findInLine und Scanner zuverwenden oder gibt etwas besseres?

Viele Grüße
 

0x7F800000

Top Contributor
Ich gehe mal davon aus, dass bei dieser vorgehensweise auch bei den python-programmierern die augen rausfallen müssten... Wenn da irgendjemand auf die idee kommt, mal zur abwechslung vier leerzeichen durch ein tab zu ersetzen, oder einfach ein zeichen vergisst, ist dieses script ziemlich für den allerwertesten.

Das ist also äuserst unflexibler unsicherer ansatz, und in java (wie auch in vielen anderen sprachen) gibt's dafür zum glück schönere lösungen:

1) zeile einscannen
2) gegen das passende regex-pattern prüfen
-Falls es passt: weiterverwerten
-Falls es nicht passt: ignorieren.

Wenn es lediglich darum geht, die zeile zu findn, würde ich sowas wie
Code:
"ATOM\\p{Blank}+\\d+\\p{Blank}+CA\\p{Blank}+.*"
vorschlagen.
 

flashdog

Bekanntes Mitglied
Andrey hat gesagt.:
1) zeile einscannen
2) gegen das passende regex-pattern prüfen
-Falls es passt: weiterverwerten
-Falls es nicht passt: ignorieren.

Wenn es lediglich darum geht, die zeile zu findn, würde ich sowas wie
Code:
"ATOM\\p{Blank}+\\d+\\p{Blank}+CA\\p{Blank}+.*"
vorschlagen.

Kann man für Schritt 1) Scanner verwenden?
Wenn im Schritt 2) die gefundene Zeile durch das Pattern "ATOM\\p{Blank}+\\d+\\p{Blank}+CA\\p{Blank}+.*" gefunden wurden wie kann man die ganze Zeile dann ausgeben?
 

0x7F800000

Top Contributor
1) Ja, kannst auch einen scanner verwenden, aber der einfachere BufferedReader reicht hier auch bestens
2) Die zeile wird nicht mit dem regex gesucht, sondern nur gegen das muster geprüft. Wenn's passt, gibst du die zeile mit System.our.println aus, ansonsten halt nicht...

Code:
BufferedReader reader=new BufferedReader(new FileReader(myFile));
String line;
while((line=reader.readLine())!=null){
  if(line.matches("ATOM\\p{Blank}+\\d+\\p{Blank}+CA\\p{Blank}+.*")) System.out.println(line);
}
 

flashdog

Bekanntes Mitglied
Danke für den Code. Habe jetzt sogar vestanden wie man es mit Scanner macht, aber dein Code ist beinahe doppelt so schnell wie meiner.

Code:
import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class PDBTest2 {
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		Scanner scn = new Scanner(new File("1D9Z.pdb"));
		while(scn.hasNext()){
			String line = scn.nextLine();
			if (line.matches("ATOM\\p{Blank}+\\d+\\p{Blank}+CA\\p{Blank}+.*"))
				System.out.println(line);
		}
	}
}

Warum ist mein Code langsamer als der Code von Andrey?
 
S

SlaterB

Gast
ein BufferedReader liest in einem Schritt gleich viele KBs an Daten,
ein Scanner vielleicht nicht unbedingt

versuche
Scanner(BufferedInputStream(FileInputStream))
 

flashdog

Bekanntes Mitglied
Code:
new Scanner(new BufferedInputStream(new FileInputStream("1D9Z.pdb")));
ist nicht wirklich schneller.

Ist es möglich Scanner mit java.nio zu verbinden?
 

0x7F800000

Top Contributor
ne, das ist nix womit man auf dateien zugreifen könnte (oder sollte), dieses package ist um Client-Anwendungen zu basteln.
Und wie gesagt, nimm doch den allereinfachsten BufferedReader und baue nicht so viel drumherum...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
N Problem mit Scanner Java Basics - Anfänger-Themen 2
cpt.Tomato Scanner problem mit Passwort Login Java Basics - Anfänger-Themen 3
X Erste Schritte Problem mit scanner Java Basics - Anfänger-Themen 2
F Scanner Problem Java Basics - Anfänger-Themen 8
T Problem mit Scanner. Java Basics - Anfänger-Themen 4
Silvascus Scanner Problem Java Basics - Anfänger-Themen 5
F Problem do while Schleife und Scanner Java Basics - Anfänger-Themen 2
F Problem mit der While schleife und dem Scanner Java Basics - Anfänger-Themen 2
B Scanner-Problem bei Eingabe Java Basics - Anfänger-Themen 4
T Problem mit java-editor + Scanner Java Basics - Anfänger-Themen 9
A Scanner Double Problem Java Basics - Anfänger-Themen 4
S Problem beim Erstellen eines Scanner-Objekts Java Basics - Anfänger-Themen 7
B Problem: Barcode Scanner Java Basics - Anfänger-Themen 3
J util.Scanner problem Java Basics - Anfänger-Themen 6
J scanner problem - linux? Java Basics - Anfänger-Themen 16
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
M Scanner Input mit if überprüfen Java Basics - Anfänger-Themen 5
D Scanner Java Basics - Anfänger-Themen 2
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
T scanner eingaben erkennen und umtauschen Java Basics - Anfänger-Themen 4
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
H Scanner nextLine() bringt Dateipfad Java Basics - Anfänger-Themen 1
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
Jul1n4tor Programm mit Scanner und If-Statements Java Basics - Anfänger-Themen 2
I Scanner Loop Java Basics - Anfänger-Themen 1
J Scanner cannot be resolved to a type Java Basics - Anfänger-Themen 3
C Scanner und If-Anweisung in Kombi Java Basics - Anfänger-Themen 3
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
J Erste Schritte Scanner Java Basics - Anfänger-Themen 4
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
javapingu Endlosschleife bei User Input mit try Scanner Java Basics - Anfänger-Themen 7
Poppigescorn Arrayliste Mittels Scanner erweitern Java Basics - Anfänger-Themen 6
Jan_x8 Timer/Scanner Java Basics - Anfänger-Themen 5
M Scanner Klasse Java Basics - Anfänger-Themen 4
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
H Quellcode Scanner Klasse Java Basics - Anfänger-Themen 2
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
S Scanner soll Groß-/ Kleinschreibung ignorieren Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
J Scanner-Klasse Java Basics - Anfänger-Themen 2
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
V Ersätze für Java-Scanner Java Basics - Anfänger-Themen 9
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
A Scanner-Error Java Basics - Anfänger-Themen 8
D Java Scanner Java Basics - Anfänger-Themen 9
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
ZH1896ZH Verstehe verschieden Scanner und hasNext() nicht ganz Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
I Scanner auf 10 Stellen begrenzt? Java Basics - Anfänger-Themen 5
B Barcode Scanner Java Basics - Anfänger-Themen 3
V Wie lasse ich die for-Schleife so oft laufen wie per Scanner angegeben? Java Basics - Anfänger-Themen 3
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
S Scanner Java Basics - Anfänger-Themen 36
S Frage zu Scanner Java Basics - Anfänger-Themen 3
O Scanner Klasse Java Basics - Anfänger-Themen 8
M java.util.scanner Fehler Java Basics - Anfänger-Themen 5
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
W Eclipse Che Scanner Java Basics - Anfänger-Themen 8
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
A Scanner.useLocale(Locale.US); Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
I Scanner und Arrays Java Basics - Anfänger-Themen 2
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
Neoline Methoden Scanner Methode Java Basics - Anfänger-Themen 9
E Probleme mit Scanner Java Basics - Anfänger-Themen 4
A Java Scanner Funktioniert nicht Java Basics - Anfänger-Themen 2
B Vom scanner in ein Arraylist Java Basics - Anfänger-Themen 7
L Scanner Ausgabe Java Basics - Anfänger-Themen 37
S Zeilenumbruch mit Scanner erkennen Java Basics - Anfänger-Themen 9
O Erste Schritte Scanner mehrere male benutzen (Konsole) Java Basics - Anfänger-Themen 7
W Wie arbeite ich mit dem Typ Scanner? Java Basics - Anfänger-Themen 5
J Input/Output Scanner Input als etwas einsetzen Java Basics - Anfänger-Themen 3
R CMDTools Scanner Fehler Java Basics - Anfänger-Themen 10
D nextInt() nicht für Scanner definiert? Java Basics - Anfänger-Themen 2
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
T Variablen Array mit Scanner befüllen Java Basics - Anfänger-Themen 6
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
b1ck Scanner schließen, erneute Verwendung Java Basics - Anfänger-Themen 12
F Scanner - nextLine() gibt leeren String zurück Java Basics - Anfänger-Themen 2
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
J Erste Schritte Scanner negative zahl einlesen und verwenden. Java Basics - Anfänger-Themen 6
W Methoden Probleme mit der Scanner Methode Java Basics - Anfänger-Themen 2
W Erste Schritte import java.util.scanner funktioniert nicht Java Basics - Anfänger-Themen 2
TheMenox Error bei Scanner - woher? Java Basics - Anfänger-Themen 14
D Fehler bei String eingabe via Scanner Java Basics - Anfänger-Themen 6
O POI Apache sheet scanner Java Basics - Anfänger-Themen 1
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
F Array mit Scanner-Werten Java Basics - Anfänger-Themen 4
M Input/Output Scanner schließt nicht Java Basics - Anfänger-Themen 2
M Scanner class Java Basics - Anfänger-Themen 6
K Mit Scanner aus einer txt Datei lesen und jede Person mit name, vorname, geburtsdatum speichern Java Basics - Anfänger-Themen 5
S Array mit "foreach"-Schleife und nextInt (aus Scanner) beschreiben Java Basics - Anfänger-Themen 6
G Strings mit Scanner (nextLine) einlesen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben